首页 > 解决方案 > 如何连续执行多个 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)

但肯定有适当的方法来做到这一点吗?

标签: swiftsprite-kitskspritenode

解决方案


正确的方法是完全按照你的做法去做。

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

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


推荐阅读