2010-07-17 47 views
2

我有一個包含三個動畫的CCSprite:空閒,走路和攻擊。我想根據精靈是否在移動(如果操縱桿正在使用)在閒置和走路之間切換。所有這些都很好。 對於攻擊性動畫,我希望它運行一次,然後在完成時返回到上一個動畫(例如:空閒),如何檢測動畫何時完成?Cocos2d - 改變動畫結束後的動畫

感謝,

戴夫

回答

5

好了,所以這就是我所做的,和它的作品,但我不知道,如果它的正確或最好的辦法: 1)存儲當前動畫。 2)如果當前動畫正在攻擊,則什麼都不做。 3)動畫之間切換時,如果新的動畫正在攻擊中,運行在子畫面的序列,所述第二動作是一個回調在回調「onDoneAttacking」 4),更改當前的動畫

但這不是很順利,並且不允許攻擊速度很快。

這裏是什麼樣子:

-(void) changeAnimation:(NSString*)name forTime:(int) times { 

    if(currentAnimation != @"attack") 
    { 
     CCFiniteTimeAction *action = [CCAnimate actionWithAnimation:[self animationByName:name]]; 
     CCRepeat *repeatAction = [CCRepeat actionWithAction:action times:1]; 
     if(name == @"attack") { 
      id doneAttacking = [CCCallFunc actionWithTarget:self selector:@selector(onDoneAttacking)]; 
      [self runAction:[CCSequence actionOne:repeatAction two:doneAttacking]]; 
     } 
     else { 
      [self runAction:repeatAction]; 
     } 
     currentAnimation = name; 
    } 
} 
-(void) onDoneAttacking { 
    currentAnimation = @"idle"; 
} 
+0

只是一個提示,對於像你「currentAnimation」狀態使用枚舉值。它速度更快,而且你有更少的迷霧:) – tallen11 2012-08-07 23:32:11