点击SpriteKit Scale

时间:2016-03-06 02:43:50

标签: swift button sprite-kit touch multi-touch

我试图为我的一个精灵创建一个“按钮触摸”效果,它效果很好但是我同时用两个或多个手指点击,我得到了非常奇怪的结果,这是我的代码:

let buttonPressAction = SKAction.scaleBy(0.8, duration: 0)

var button = SKNode()


override func didMoveToView(view: SKView) {

    //assign sprite to node

    button = self.childNodeWithName("button") as! SKSpriteNode!

  }

for touch: AnyObject in touches {

    let location = touch.locationInNode(self)

    if button.containsPoint(location)  {

        button.runAction(buttonPressAction)

    }
 }

}

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {

    button.runAction(buttonPressAction.reversedAction())
}

1 个答案:

答案 0 :(得分:1)

尝试从

更改SK比例操作
...scaleBy

...scaleTo

确保它始终缩放到相同的大小。使用scaleBy,它将缩放0.8,而不是0.8。这很可能会导致多次触摸产生奇怪的结果,因为每个手指/点击都会缩小0.8。

之前我从未使用过reverseAction,所以我不确定这是否会导致问题。如果它只是通过将按钮缩放回1来重置按钮

...scaleTo(1, duration: 0)

如旁注所示,您可以说

for touch in touches 

而不是

for touch: AnyObject in touches