gpt4 book ai didi

swift - 在哪些情况下 SKNode 上的 runAction 无法完成?

转载 作者:行者123 更新时间:2023-11-30 14:18:50 24 4
gpt4 key购买 nike

是否存在使用 runAction 运行 SKAction 无法完成的已知情况?

我在不同的 SKNode 上启动了多个“runAction”。为了同步所有这些操作,我使用了一个计数器,该计数器在每个 SKAction 的完成 block 内递增。当计数器达到启动的 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!")
}

}

操作是动态生成的,由以下操作的序列组成:

  • waitForDuration
  • 缩放至
  • 移动
  • 隐藏
  • 取消隐藏

没有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,
])

最佳答案

有一种已知情况:在序列中的从父项中删除之后添加操作:SKAction runAction does not execute completion block

正如评论中所解释的:

Remove from parent is causing the rest of the actions in the sequence not to be called, since the involved node is no longer in the scene. The sequence didn't complete, therefore the completion block shouldn't be called.

关于swift - 在哪些情况下 SKNode 上的 runAction 无法完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30767323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com