SpriteKit 缩放

SpriteKit Scale on tap

我正在尝试为我的一个 sprite 创建一个 "button touch" 效果,效果很好,但是我同时用 2 个或更多手指点击,我得到了非常奇怪的结果,这是我的代码:

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())
}

尝试将 SK 缩放操作从

更改为
...scaleBy

...scaleTo

以确保它始终缩放到相同的大小。使用 scaleBy 它将按 0.8 缩放,而不是 0.8。这很可能会导致多次触摸出现奇怪的结果,因为每个 finger/tap.

缩放 0.8

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

来重置按钮
...scaleTo(1, duration: 0)

作为旁注,你可以直接说

for touch in touches 

而不是

for touch: AnyObject in touches