Swift3 从Spritekit中的特定帧开始/停止sprite动画

Swift3 从Spritekit中的特定帧开始/停止sprite动画,swift3,sprite-kit,xcode8,Swift3,Sprite Kit,Xcode8,​我有一个30帧的精灵动画,其中6帧是关键帧,其余是从关键帧到关键帧的过渡 我正在尝试找出如何执行以下操作: 按下按钮后,精灵开始设置动画。动画将至少运行一次,然后在随机选择的关键帧上停止动画 再次按下按钮时,动画将从最后选择的关键帧开始,运行一个完整的循环,然后在随机选择的关键帧上再次停止 我发现了一个类似的问题,但这是在2014年提出的。Swift和Spritekit在3年内的变化是否足以使其成为可能 编辑: @亚历山德罗·奥尔纳诺 我试过这个: var roll1Textures =

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

我正在尝试找出如何执行以下操作:

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

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

我发现了一个类似的问题,但这是在2014年提出的。Swift和Spritekit在3年内的变化是否足以使其成为可能

编辑: @亚历山德罗·奥尔纳诺 我试过这个:

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”;属性初始值设定项在“self”可用之前运行


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

我不知道它是否对您的游戏有用,但现在在Swift中,您也可以用一行代码:

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

换句话说,你可以创建一个由你的特定范围组成的数组切片,然后用
数组重新创建纹理数组

当我知道SpriteKit中出现这个特定问题时,没有任何改变。我想说的是,只需创建一个自定义操作来处理不同的状态。我的问题很长,无法作为评论发布。请看我问题中的“编辑”。你应该制作一个SKTexture数组,而不是像你那样制作一个字符串数组