2012-05-07 50 views
1

對於cocos2d來說相當新穎,所以這可能是一個學校男孩的問題。cocos2d循環中的runAction

我有ccMenu完整的ccMenuItemImage的,並希望按順序動畫每個菜單項淡出。

我有所有的CCMenuItemImages數組:

menuItems = [[NSArray alloc] initWithObjects:button1, button2, button3, nil]; 

,我通過陣列試圖環和淡出每個按鈕出:

CCFadeOut *fadeToAlpha = [CCFadeOut actionWithDuration:0.5]; 

for (CCMenuItemImage *nextOne in menuItems) 
    [nextOne runAction:fadeToAlpha]; 

這似乎是工作,但只會淡出數組中的最後一個CCMenuItemImage。我知道我可以在實際的CCMenu上執行動作,但是我想在每個菜單項上一個接一個地執行動畫。

任何幫助,將不勝感激。

回答

0

你必須使用CCSequence爲您的工作....

而不是使用循環使用CCSequence這樣的..

[button1 runAction:[CCSequence actions:fadeToAlpha,use CCCallFuncN to call 2nd method, nil]]; 

在第二個方法

[button2 runAction:[CCSequence actions:fadeToAlpha,use CCCallFuncN to call 3nd method, nil]]; 

還有另一種方法....這是棘手的... 你的褪色時間是0.5。

float duration = 0; 
for (CCMenuItemImage *nextOne in menuItems) 
{ 
    [nextOne runAction:[CCSequence actions:[CCDelayTime actionWithDuraion:duration],fadeToAlpha,nil]]; 

    value = value + 0.5; 

} 

檢查語法..這樣你就可以陸續動畫按鈕,一個...希望這有助於.. :)

0

嘗試:

int index=0; 
for (CCMenuItemImage *nextOne in menuItems){ 
    CCFadeOut *fadeToAlpha = [CCFadeOut actionWithDuration:0.5]; 
    id fader = [CCSequence actions:[CCDelayTime actionWithDuration:index*.5], 
            fadeToAlpha,nil]; 
    [nextOne runAction:fader]; 
    index++; 
} 

還,避免使用相同的動作對象實例具有多個runActions,爲每個使用實例創建新動作。