0

次のように、2 つのスプライトでアニメーションを実行しています。

-(void) startFootballAnimation {

CCAnimation* footballAnim = [CCAnimation animationWithFrame:@"Football" frameCount:60 delay:0.005f];
spiral = [CCAnimate actionWithAnimation:footballAnim];
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:spiral];
[self runAction:repeat];
[secondFootball runAction:[[repeat copy] autorelease]];
}

私が抱えている問題は、このメソッドを呼び出すとき:

    - (void) slowAnimation {

[spiral setDuration:[spiral duration] + 0.01];
}

....最初のスプライトのアニメーションのみが遅くなり、2 番目のスプライトは遅くなりません。アニメーションの速度低下に反応させるために、コピーされたアクションで何か違うことをする必要がありますか?

4

1 に答える 1

2

オブジェクトで copy を呼び出すとrepeat、内部アクションもコピーされます。これは、CCAction.mでCCRepeatForeverの の実装を見るとわかります。copyWithZone:アクションは 1 つのターゲット ノードしか持てないため、これは良いことです。

そうです、上記のコメントであなたの質問に答えるには、スプライトごとに新しいアクションを作成する必要があります。コピー メソッドを使用してアクションをすばやく複製できますが、その動作 (たとえば、自分のslowAnimationもの) に変更を個別に適用する必要があります。

于 2012-06-12T20:49:53.547 に答える