2014-10-11 82 views
-1

Thanx先期..我有一個問題,我們如何釋放內存在cocos2dx? 在我的遊戲中,我的第一個場景需要大量的內存,因爲在這個場景中有很多動畫在同一時間運行,有很多動畫,所以我對此感到滿意,但是當我們進入下一個場景時,它確實不釋放先前使用的內存,這是我的問題,所以當我們更改場景時,如何釋放先前場景使用的內存?內存問題在cocos2dx

回答

0

要轉到場景之間,您可以撥打pushScenereplaceScene

推場景

如果你的場景之間推那麼我建議您之間有一個負載場景。它應該是輕量級的,以便您有機會釋放您的舊場景中的所有內容。這就是onEnter(DidFinish)onExit(DidStart)方法派上用場的地方。

調用鏈將是:

  1. oldScene->onExitDidStart()
  2. loadScene->onEnter()
  3. oldScene->onExit() < - 這是你釋放一切
  4. loadScene->onEnterDidFinish() < - 這就是你加載了新的場景
  5. newScene->onEnter()

等等......如果你已經正確地管理你的記憶,那麼你不應該一次有2個沉重的場景。

更換場景

這是一個容易得多的情況。您只需確保爲新場景儘可能少加載,直到舊場景完全消失。即當調用onEnterDidFinish()時,甚至在它之後有1幀。

0

Cocos2d-x支持自動釋放內存。例如,當您通過調用Sprite :: create()創建一個精靈時,它會將此精靈添加到自動發佈池中。如果你不添加這個精靈成爲當前場景的孩子(或第n級別的孩子),它將被釋放。
請勿使用新建創建對象,請在調用下一個場景時使用create(),並釋放上一個場景中的所有內容。