我正在尝试使用纹理数组为SKSpriteNode设置动画。我想要实现的是迭代纹理数组并通过每次迭代更改SKSpriteNode纹理并显示它的变化大约1秒。唯一的问题是,随着动画的发生,循环仍在继续,我相信,所以我看不到变化。
我基本上希望能够在屏幕上看到每个纹理大约一两秒后才会发生变化。这是我到目前为止所拥有的。
var textures: [SKTexture] = [texture1, texture2, texture3, texture4]
var sprite = SKSpriteNode()
func animateSpriteTextures() {
for texture in textures {
/* Want to pause for about a second or two here, but does not. */
sprite.texture = texture
let scaleDown = SKAction.scaleTo(200, duration: 1)
let scaleUp = SKAction.scaleTo(300, duration: 1)
sprite.runAction(SKAction.sequence([scaleDown, scaleUp]))
}
}
答案 0 :(得分:1)
查看animateWithTextures:
操作。你可以这样做:
sprite.runAction(SKAction.animateWithTextures(textures, timePerFrame: 1.0))
如果您需要在动画发生时更改精灵的大小,那么您可能想要创建一个动作组SKAction.group()
来协调动画和大小的变化,或者{{1}会对你有用。