2012-05-07 5 views
1

これはおそらく学校の少年問題です。cocos2d runAction in loop

私はccMenuItemImageでいっぱいのccMenuを持っており、フェードアウトする順番に各メニュー項目をアニメーション化したいと考えています。

私はすべての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でアクションを実行できることは知っていますが、私は各メニュー項目でアニメーションを1つずつ実行したいと思います。

ご協力いただければ幸いです。

答えて

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]]; 

で。

もう1つの方法があります....難しい... フェードタイムは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++; 
} 

、同じANの使用を避けます複数のrunActionsを持つアクションオブジェクトインスタンスでは、使用するインスタンスごとに新しいアクションを作成します。