【问题标题】:Touchesbegan updating each frameTouches开始更新每一帧
【发布时间】:2015-05-21 22:29:58
【问题描述】:

我正在制作一个有按钮的游戏:当按钮被按下(触摸)时,玩家向前移动。释放按钮时,播放器停止移动。

现在我可以使用 touchesbegan 和 touchesended 功能来做到这一点,但这不是我想要的,因为我要添加更多按钮并启用多点触控,必须有更简单的方法..

有人知道怎么做吗?

【问题讨论】:

  • 您需要获取触摸的位置,通过该位置您可以决定用户按下、点击或按住的按钮
  • 如何从覆盖更新函数中获取位置?这是否适用于多点触控?
  • 看看这个教程,希望对你有帮助techotopia.com/index.php/…
  • 谢谢,但这对我没有帮助。我需要知道如何从更新方法中获取触摸的位置。
  • 是的...它确实可以帮助您... touchesBegan 和 touchesEnded 更新每一帧就像更新一样

标签: swift sprite-kit touch touchesbegan


【解决方案1】:

如何快速检索触摸位置

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    let touch = touches.anyObject()! as UITouch
    let location = touch.locationInView(self)
}

您可以对所有其他功能执行相同的操作

【讨论】:

  • 请举例说明从更新中调用的函数,该函数获取每帧的位置
  • 什么意思?只需将它添加到应用的更新部分,它就会在每一帧中被调用
【解决方案2】:

这里是 Objective-C 的答案,虽然强烈推荐熟悉框架、屏幕上的位置、图层属性等,因为此解决方案可检测用户触摸与屏幕中元素位置之间的重合(我说的是肖像、风景……动画等)。 希望对您有所帮助。

  • (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [触摸任何对象]; CGPoint touchLocation = [touch locationInView:self.view];

    if (CGRectContainsPoint(aViewForExample.frame, touchLocation)){
         //the user has touched within this element, so what's next?
    } 
    

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 2020-09-02
    • 2021-08-17
    • 2013-11-06
    • 2021-08-17
    相关资源
    最近更新 更多