我想在操作运行后而不是在运行期间更改变量的值。这是我的代码:
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
if gameNotStarted {
if firePosition.x != 320 || firePosition.y > 280 {
fire.runAction(fireButtonReturn)
iapButton.runAction(iapButtonReturn)
aboutButton.runAction(abtButtonReturn)
if fire.hasActions() == false {
println("has no actions")
firePosition.x = 320
firePosition.y = 280
}
}
}
}
我正在运行的三个 Action 具有完全相同的持续时间,因此我只需要一个来检查它们是否已完成运行。在它们完成运行后,我想更改firePosition.x
和firePosition.y
的值。
非常重要的一点是,开火位置值恰好在 Action 运行后发生变化,绝对不会在 Action 运行完成之前发生变化。
但是,对于我当前的代码,我从不根据结果和控制台运行 if fire.hasActions() ...
部分。
我发现了类似的问题,它们在 obj-c 中。
感谢您的帮助。
最佳答案
您应该针对您的问题使用完成处理程序:
//Run the action
iapButton.runAction(iapButtonReturn,
//After action is done, just call the completion-handler.
completion: {
firePosition.x = 320
firePosition.y = 280
}
)
或者您可以使用 SKAction.sequence
并将您的操作添加到 SKAction.block
中:
var block = SKAction.runBlock({
fire.runAction(fireButtonReturn)
iapButton.runAction(iapButtonReturn)
aboutButton.runAction(abtButtonReturn)
})
var finish = SKAction.runBlock({
firePosition.x = 320
firePosition.y = 280
})
var sequence = SKAction.sequence([block, SKAction.waitForDuration(yourWaitDuration), finish])
self.runAction(sequence)
关于ios - 检测 SKAction 是否完成运行,Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29731925/