2011-06-19 11 views
8

アクションを一度作成してから、複数のスプライトに追加したいとします。たとえば、私は自分の体に足の束を追加する 'モンスター'を持っています。これらの脚はそれぞれ身体の子供であり、私はそれらを前後に回転させたい。私はCCRepeatForeverの2つのシーケンスを作成しました。これはうまく動作します。私は脚にアクションを追加できますが、それを別の脚に追加すると、最初の脚は回転しません。複数のスプライトで同じアクションを使用していますか?

私は各脚のために新しいシーケンスを作りたくありません - それは何の痛みです!簡単な方法があります!

EDIT:(!おかげで再びルクマン)

私はgixdevとルクマンの答えごとに、このようにそれを実装し...

[leg1 runAction:action]; // for the first time using the action 
[leg2 runAction:[[action copy] autorelease]]; // for all subsequent uses 

答えて

10

あなた一度作成したアクションをコピーする場合、それはあなたに

[leg1 runAction:[action copy]]; 
[leg2 runAction:[action copy]]; 
... 
を助けます
+3

あなたはあなたの 'コピー 'を'解放'する必要があるので、 '[leg1 runAction:[[アクションコピー] autorelease]];'代わりに;) – Lukman

+0

ああ、そうです。それは聖なるメモリ管理の重要な部分です。) – gixdev

+0

オリジナルの 'CCAction'は' alloc'と 'init'を使って作成するか、この方法でプログラム全体に再利用する' property'として作成する必要があります - それ以外の場合は、それ自体がオートレリースされ、 'コピーされる 'ことはできません。 – Steve

関連する問題