swift - 如何连续执行多个 SKSprintNode 的动画?
问题描述
我已经知道如何一次在同一个 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
只是告诉精灵要做什么,而不是立即执行。
以此类推,把自己想象成电影导演。你告诉你的演员(精灵)在场景开始之前做什么。当你说“行动!” (即更新循环开始运行)所有的精灵都开始做你告诉他们的任何事情,但他们是独立做的。大多数 SpriteKit 编程都将您的应用程序构建为对场景播放时发生的事情的反应。你可以告诉精灵在他们完成之前的任务时做一些新的事情(通过一个完成块参数run
),告诉他们停止他们正在做的任何事情并做其他事情(取消动作,添加新动作),或者让他们做出反应当外部事件发生时(例如,您从物理引擎收到碰撞通知或用户触摸屏幕)。