如何连续执行多个 SKSprintNodes 的动画?

How can I execute animations for multiple SKSprintNodes consecutively?

我已经知道如何在同一个 SKSpriteNode 上同时 运行 多个动画:

createPaths()
let myIcon1 = MyIcon(wIcon: "screen", iSize: iSize)
let move    = SKAction.follow(iconPath[0], asOffset: false, orientToPath: false, duration: 1)
let shrink  = SKAction.resize(byWidth: -iSize.width/2, height: -iSize.width/2, duration: 1)
let blur    = SKAction.fadeAlpha(to: 0.6, duration: 1)
let group   = SKAction.group([shrink, move, blur])
myIcon1.run(group)

但我还有两个图标想同时制作动画。

当然,总共只有 3 个图标,如果我这样做,我看不到任何延迟:

myIcon1.run(group1)
myIcon2.run(group2)
myIcon3.run(group3)

但肯定有正确的方法来做到这一点?

正确的做法是照你做的去做。

从问题的措辞来看,您可能希望 myIcon1.run(group1)myIcon2.run(group2) 之前完成。如果是这样,那不是 运行 操作的工作方式。 run 只是告诉精灵要做什么,而不是立即去做。

打个比方,把自己想象成电影导演。你告诉你的演员(精灵)在场景开始之前要做什么。当你说“行动!” (即,update loop 开始 运行)所有精灵开始执行您告诉它们的任何操作,但它们是独立执行的。大多数 SpriteKit 编程都是将您的应用程序构建为对场景播放时发生的事情的反应。你可以告诉精灵在完成之前的任务时做一些新的事情(通过 run 的完成块参数),告诉他们停止他们正在做的事情并做其他事情(取消动作,添加新动作) ,或者让它们在外部事件发生时做出反应(例如,您从物理引擎获得碰撞通知或用户触摸屏幕)。