1

cocos2d は初めてなので、これはおそらく男子生徒の質問です。

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 でアクションを実行できることはわかっていますが、メニュー項目ごとにアニメーションを次々と実行したいと考えています。

どんな助けでも大歓迎です。

4

2 に答える 2

0

仕事にはCCSequenceを使用する必要があります....

ループを使用する代わりに、このように CCSequence を使用します。

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

2番目の方法では

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

}

構文を確認してください..この方法で、ボタンを次々にアニメーション化できます...これが役立つことを願っています.. :)

于 2012-05-07T19:33:54.400 に答える
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 で同じアクション オブジェクト インスタンスを使用することは避け、使用するインスタンスごとに新しいアクションを作成します。

于 2012-05-08T03:31:49.653 に答える