2011-06-19 27 views
8

Tôi muốn tạo một hành động một lần, sau đó thêm nó vào nhiều lần. Ví dụ, tôi có một 'con quái vật' có được một bó chân được thêm vào cơ thể của nó. Mỗi chân này là những đứa trẻ của cơ thể, và tôi muốn chúng xoay qua lại. Tôi đã thực hiện một số CCRepeatForever của một chuỗi gồm hai hành động CCRotateBy hoạt động tuyệt vời. Tôi có thể thêm hành động vào một chân, nhưng nếu tôi sau đó thêm nó vào một chân khác, chân đầu tiên không xoay.Sử dụng cùng một hành động trên nhiều lần phun?

Tôi không muốn tạo một chuỗi mới cho mỗi chân - thật là một nỗi đau! Có phải là một cách dễ dàng!

EDIT: (! Nhờ LẠI Lukman)

tôi thực hiện nó như thế này, mỗi gixdev và câu trả lời Lukman của ...

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

Trả lời

10

Nếu sao chép hành động một lần tạo của bạn nó giúp bạn

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

Bạn cần phải 'giải phóng' những gì bạn' sao chép', do đó tôi muốn đề xuất '[leg1 runAction: [[action copy] autorelease]];' thay thế;) – Lukman

+0

Ồ, vâng. Một phần quan trọng trong quản lý bộ nhớ thánh =) – gixdev

+0

Chỉ cần rõ ràng, 'CCAction' gốc cần phải được tạo bằng' alloc' và 'init', hoặc được tạo thành' property' được sử dụng lại trong suốt chương trình theo cách này - nếu không nó sẽ tự động được phát hành và không có sẵn để được sao chép, đúng không? – Steve

Các vấn đề liên quan