是否存在使用SKAction
运行runAction
未完成的已知情况?
我在不同的SKNode
上启动了几个'runAction'。为了同步所有这些操作,我使用一个在每个SKAction
的完成块内递增的计数器。当计数器达到启动的SKAction
的确切数量时,动画就会完成。
有时SKAction
没有完成,动画永远不会完成。
// Several actions are launched...
myNode.runAction(myActions,completion:{
checkCompletion()
})
// Check if all actions completed
//
// numberOfLaunchedActions: number of actions launched
// logDebug: some log helper
func checkCompletion() {
// This counter is initialized earlier
numberOfCompletedActions++
logDebug(">> Actions completed: \(numberOfCompletedActions)/\(numberOfLaunchedActions)")
if numberOfCompletedActions == numberOfLaunchedActions {
/// some statements
logDebug("Animation Completed!")
}
}
动作是动态生成的,由以下sequence
个动作组成:
waitForDuration
scaleTo
moveBy
hide
unhide
不是removeFromParent
也不是runAction
也不是runBlock
。
我关注的行动如下:
let waitAction = SKAction.waitForDuration(0.4)
let scaleAction = SKAction.scaleTo(0.1, duration: 2.0)
scaleAction.timingMode = .EaseOut
let myAction = SKAction.sequence([
waitAction,
scaleAction,
])
答案 0 :(得分:0)
有一个已知的案例:在Remove from parent
中sequence
之后添加操作:SKAction runAction does not execute completion block
如评论中所述:
Remove from parent
正在导致其余的操作sequence
不被调用,因为涉及的节点不再存在 现场。序列没有完成,因此完成 不应该调用块。