2015-12-02 91 views
1

我有一個帶紋理動畫的SKSpriteNode。我基本上有一個4幀的字符空閒週期和一個眨眼動畫序列。我想要循環播放字符空閒循環,但要讓它以隨機間隔播放閃爍動畫序列。SpriteKit如何在每次變化的隨機數動畫循環後重復SKAction?

我有以下代碼;

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) 

} 

問題在於,隨機數只生成一次,所以眨眼不會隨機發生。就在每次循環次數相同之後。我如何達到我期待的效果?

回答

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) 

    } 

的部分unowned self保護您免受創建strong reference cycle

+0

你完全砸了它。謝謝。 –