2013-07-14 38 views
1

我的問題是寫在cocos2d V1.1.0-beta2b對於iOS應用:CCParticleSystem去除最佳實踐

什麼的最佳實踐刪除/釋放一個CCParticleSystem

我知道的一種方法是使用setAutoRemoveOnFinish:YES。

[emitter setAutoRemoveOnFinish:YES]; 
[emitter stopSystem]; 

另一種方法是使用removeChild手動刪除發射器。

還有其他嗎?通常建議採用哪種方式?

請注意,在cocos2d v1.1.0-beta2b下有關於CCParticleSystem移除/發佈的任何已知問題?

回答

0

要刪除粒子系統,只需將其從其父節點中刪除即可。這是最好的方式。

如果你的粒子系統沒有無限的持續時間,最好的方法是使用setAutoRemoveOnFinish。當粒子系統結束時它會自動從父節點移除系統。

如果您的粒子系統有一個無限的持續時間,然後使用removeChildcleanUp:YES(你不需要設置stopSystem before)。這樣系統就被強制刪除了。

或者您可以使用stopSystemsetAutoRemoveOnFinish:YES,系統將在最後一個粒子結束後被刪除。這樣系統就可以順利移除。

其他提示:

  • 使用CCParticleSystemQuad而不是CCParticleSystem
  • 建議您使用autorelease構造函數創建粒子系統,如[CCParticleSystemQuad particleWithFile:][CCParticleSystemQuad particleWithTotalParticles:]
  • 而且,當然,如果您有一個屬性保留它,則使用release
+0

你確定這是正確的嗎? 「stopSystem不會刪除粒子系統,它會阻止它,但系統將保持爲小孩。重要提示:如果停止系統,它不會被setAutoRemoveOnFinish刪除,因爲它已停止並且無法完成。」 – AJ222

+0

是的! 'stopSystem'會「暫停」系統。它可以通過'resetSystem'重新啓動。 – Bivis

+0

我看着它,它似乎喜歡這是不正確的,因爲發射器被刪除。 我在ccparticlesystem代碼中看到使用autoRemoveOnFinish屬性移除的條件是: if(particleCount == 0 && autoRemoveOnFinish_)。 stopSystem會在幾秒鐘後使particleCount爲0(取決於粒子的壽命,因爲不會再有粒子被髮射)。我認爲這應該是以動畫方式移除發射器的方式(它看起來比用removeChild將粒子系統以及所有活動粒子「拉出」更好)。 – am1987