SKNode
的run
函数可让您在动作完成时运行一个块,但如果通过removeAllActions
取消/删除了该动作,该怎么办呢?
取消动作不会调用run
函数的完成块。
是否有回调或方法可以在动作被取消/删除时运行代码?
SKNode
的run
函数可让您在动作完成时运行一个块,但如果通过removeAllActions
取消/删除了该动作,该怎么办呢?
取消动作不会调用run
函数的完成块。
是否有回调或方法可以在动作被取消/删除时运行代码?
是的,如果在动作完成之前将其删除,则完成块将不会运行。根据文档:
run(:completion:)方法与run(:)方法相同,但在动作完成后,将调用您的块。仅当动作运行到完成时才调用此回调。如果在动作完成之前删除该动作,则永远不会调用完成处理程序。
removeAllActions
之前使用action(forKey:)
进行检查,以查看特定动作是否正在运行。如果是,则可以在调用removeAllActions
之前执行所需的任何操作。 - rmpclass YourSpriteNode: SKNode {
func doSometingAtCompletionAction() {
//all your stuff
}
override removeAllActions() {
super.removeAllActions()
doSometingAtCompletionAction()
}
}
UIView
中的animateWithDuration
)。 - Crashalot