[英]How do I interrupt an SKAction.animate that is repeating forever to run another animation each time the .touchesBegan is called?
[英]SpriteKit how to repeat an SKAction after a VARYING random number of animation loops each time?
我有一个带有纹理动画的SKSpriteNode。 我基本上有一个4帧的角色空闲周期和一个眨眼动画序列。 我想永久循环角色空闲周期,但使其以随机间隔播放眨眼动画序列。
我有以下代码;
func playIdle() {
let idle_loop = SKAction.repeatAction(action_textureSequence_idle!, count: randomLoopCount())
let sequence = SKAction.sequence([idle_loop, action_textureSequence_blink!])
let repeatSequence = SKAction.repeatActionForever(sequence)
runAction(repeatSequence)
}
func randomLoopCount() -> Int {
return Int(arc4random_uniform(10) + 2)
}
问题是随机数只产生一次,所以眨眼根本不会随机发生。 每次循环次数相同之后。 如何达到我想要的效果?
您可以使用递归来实现您想要的:
func playIdle() {
let idle_loop = SKAction.repeatAction(action_textureSequence_idle, count: Int(arc4random_uniform(10) + 2))
let sequence = SKAction.sequence([idle_loop,
action_textureSequence_blink,
SKAction.runBlock({[unowned self] in self.playIdle()})])
runAction(sequence)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.