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
我正在尝试为我的一个 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