2014-10-11 84 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(),并释放上一个场景中的所有内容。