目标是同时为多个 SCNNode 设置动画,然后在所有动画完成后调用完成块。并行动画具有相同的持续时间,因此如果一起开始,将同时完成。
这个 SO 答案建议使用group
Sprite Kit 的功能,但 Scene Kit 中没有类似物,因为SCNScene
该类缺少runAction
.
一种选择是针对每个节点单独运行所有操作,并让每个操作调用相同的完成函数,该完成函数必须维护一个标志以确保它只被调用一次。
另一种选择是避免完成处理程序并在与动画持续时间匹配的延迟后调用完成代码。然而,这会在测试期间产生竞争条件,因为有时动画在完成之前就被暂停了。
不过,这似乎很笨拙。在 SceneKit 中对多个节点的动画进行分组然后调用完成处理程序的正确方法是什么?