2012-04-21 82 views
1

我正在開發一款使用cocos2d的iPhone遊戲。cocos2d-iphone淡出精靈需要清理?

當玩家通過做周圍的事物和得分點移動時,我幾乎不引起CCLabelBMFont情況下出現,然後淡出(CCFadeOut)。這些CCLabelBMFont實例是添加到圖層的精靈。

我是否「泄漏」了內存或任何東西,它們在完成CCFadeOut操作後不從層中移除淡出的精靈,或者它們隨後消失了,或者不需要被認爲是「有效的」?

回答

1

CCFadeOut完成後,該層將保持現在透明標籤的保持。之後您必須手動將其從圖層中移除,除非您計劃稍後將其淡入,在這種情況下,您可以將其保留。

它是低效的存儲器使用,而不是內存泄漏。

您不會導致內存泄漏,因爲當圖層被釋放時,它會釋放其子節點,包括標籤,假設您沒有以不觸發保留的方式實例化標籤。

更新:如何刪除標籤,他們淡出

後,用CCSequence看起來像這樣替換您CCFadeOut:

[yourLabel runAction:[CCSequence actions:[CCFadeOut actionWithDuration:DURATION], [CCCallFuncN actionWithTarget:self selector:@selector(removeLabel:)], nil]]; 

現在執行新的處理程序removeLabel:並使其刪除標籤。它將標籤作爲參數。

+0

這當然是非常合情合理的,我預期的那樣多。有沒有我的方式,我可以說[層removeAllInvisibleChildren];?因爲否則,我想我需要一種方法來保存這些東西的清單,除非我經常足夠頻繁地「回收」我的層以解決「低效內存使用」問題。 – robbpriestley 2012-04-22 15:54:22

+0

您可以用CCSequence替換CCFadeOut。我已經更新了我的答案。 – 2012-04-23 11:42:25

+0

啊哈,這很有道理。謝謝。 – robbpriestley 2012-04-24 23:29:21

0

CCFadeOut不刪除也不釋放你的精靈,你應該做一次他們的目的是結束了。 Infact沒有行動釋放/刪除其他物體。他們只是在操縱他們。