2014-10-07 98 views
0

我希望我的行動,以每2秒重複。這是我當前的代碼:不斷重複一個動作

SKSpriteNode *lightnut = [SKSpriteNode spriteNodeWithImageNamed:@"lightnut.png"]; 
    BOOL heads = arc4random_uniform(100) < 50; 
    lightnut.position = (heads)? CGPointMake(257,510) : CGPointMake(50,510); 
    [self addChild: lightnut]; 

    SKAction *moveNodeUp = [SKAction moveByX:0.0 y:-600.0 duration:2.0]; 
    [lightnut runAction: moveNodeUp]; 

我該如何重複一遍又一遍地重複上述代碼中所述的操作?我想精靈開始移動,等待2秒鐘,然後啓動另一個。是否有可能之前的原始精靈已完成移動到下一個點發送另一個精靈?

謝謝!

+0

SKAction的重複動作是什麼,你want.This可以幫助你http://stackoverflow.com/questions/24975288/spritekit-how-to-run-a-method - 對於-A-一定量電流的時間,然後啓動,另一個-O – vishnuvarthan 2014-10-07 04:07:36

回答

0

我建議你使用SKAction生成精靈,因爲行動暫停/恢復適當的時候暫停/恢復場景或視圖。這裏有一個如何做一個例子:

// Declare SKAction that waits 2 seconds 
SKAction *wait = [SKAction waitForDuration:2.0];  

// Declare SKAction block to generate the sprites 
SKAction *createSpriteBlock = [SKAction runBlock:^{ 
    SKSpriteNode *lightnut = [SKSpriteNode spriteNodeWithImageNamed:@"lightnut.png"]; 
    BOOL heads = arc4random_uniform(100) < 50; 
    lightnut.position = (heads)? CGPointMake(257,510) : CGPointMake(50,510); 
    [self addChild: lightnut]; 

    SKAction *moveNodeUp = [SKAction moveByX:0.0 y:-600.0 duration:2.0]; 
    [lightnut runAction: moveNodeUp]; 
}]; 

// Combine the actions 
SKAction *waitThenRunBlock = [SKAction sequence:@[wait,createSpriteBlock]]; 

// Lather, rinse, repeat 
[self runAction:[SKAction repeatActionForever:waitThenRunBlock]]; 
+0

謝謝你,這讓他們繼續產卵。 :) – Ryandev 2014-10-07 14:08:36