【问题标题】:How can I execute animations for multiple SKSprintNodes consecutively?如何连续执行多个 SKSprintNode 的动画?
【发布时间】:2021-05-20 00:06:31
【问题描述】:

我已经知道如何在同一个 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)

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

【问题讨论】:

    标签: swift sprite-kit skspritenode


    【解决方案1】:

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

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

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

    【讨论】:

    • 不,我知道这些命令会自行运行。但是,如果我有 20 个 SKSpriteNodes 我想同时运行动画呢?在某些时候,我想如果我必须告诉“每个人”行动,我会达到一个时间滞后。
    • 在某些时候事情会失去动力,但一般来说不可能说什么。这取决于设备、纹理的大小、应用的任何效果、物理和使用的物理体类型等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多