2011-06-19 18 views
8

Chcę utworzyć akcję raz, a następnie dodać ją do wielu duszków. Na przykład, mam "potwora", który dostaje kilka nóg dodanych do jego ciała. Każda z tych nóg jest dziećmi ciała i chcę, aby obracały się tam iz powrotem. Zrobiłem CCRepeatForever sekwencji dwóch akcji CCRotateBy, która działa świetnie. Mogę dodać akcję do nogi, ale jeśli dodam ją do innej nogi, pierwsza noga nie obraca się.Stosując tę ​​samą akcję dla wielu duszków?

Nie chcę tworzyć nowej sekwencji dla każdej nogi - co za ból! Musi być łatwy sposób!

EDIT: (! Jeszcze raz dziękuję Lukman)

I wprowadziły go w ten sposób, za gixdev i odpowiedzi Lukman za ...

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

Odpowiedz

10

Jeśli kopiowanie Po utworzeniu działania, które pomogą Ci

[leg1 runAction:[action copy]]; 
[leg2 runAction:[action copy]]; 
... 
+3

Musisz "zwolnić" to, co "kopiujesz", dlatego sugeruję '[leg1 runAction: [[action copy] autorelease]];' zamiast;) – Lukman

+0

Oh, tak. To ważna część zarządzania świętą pamięcią =) – gixdev

+0

Po prostu, aby było jasne, oryginalna 'CCAction' musi być utworzona za pomocą' alloc' i 'init', lub zrobiona jako' właściwość' do ponownego użycia w programie w ten sposób - w przeciwnym razie sam się autoreleased i nie będzie mógł być "skopiowany", prawda? – Steve

Powiązane problemy