从Spritekit

时间:2017-05-03 07:55:37

标签: swift3 sprite-kit xcode8

我有30帧的精灵动画,其中6帧是关键帧,其余是从关键帧到关键帧的过渡。

我想弄清楚如何执行以下操作:

  • 按下按钮时,精灵开始动画。动画将至少运行一次,然后它将在随机选择的关键帧上停止动画。

  • 再次按下按钮时,动画将从最后选择的关键帧开始,将运行1个完整周期,然后在随机选择的关键帧上再次停止。

我发现了一个类似的问题here,但是在2014年就提出了这个问题.Swift和Spritekit在3年内是否有足够的变化才能实现?

编辑: @Alessandro Ornano 我试过这个:

var roll1Textures = ["Roll1Motion0", "Roll1Motion1", "Roll1Motion2", "Roll1Motion3", "Roll1Motion4", "Roll1Motion5", "Roll1Motion6", "Roll1Motion7", "Roll1Motion8", "Roll1Motion9", "Roll1Motion10", "Roll1Motion11", "Roll1Motion12", "Roll1Motion13", "Roll1Motion14", "Roll1Motion15", "Roll1Motion16", "Roll1Motion17", "Roll1Motion18", "Roll1Motion19", "Roll1Motion20", "Roll1Motion21", "Roll1Motion22", "Roll1Motion23", "Roll1Motion24", "Roll1Motion25", "Roll1Motion26", "Roll1Motion27", "Roll1Motion28", "Roll1Motion29"]

let roll1Animation = SKAction.animate(with: Array(roll1Textures[0...5]), timePerFrame: 0.06, resize:false, restore:false)

但是我收到一条错误消息:无法使用实例成员' roll1Textures'属性初始化者;财产初始化程序在“自我”之前运行是可用的。

我是如何以错误的方式实现您的代码的?

1 个答案:

答案 0 :(得分:1)

我不知道它对你的游戏是否有用但现在在Swift中你也可以在一行中完成:

let animation = SKAction.animate(with: Array(textures[0...5]), timePerFrame: 0.06, resize:false, restore:false)

换句话说,您可以创建由特定范围组成的数组切片,然后使用Array

重新创建纹理数组