cocos2dx中的内存问题

时间:2014-10-11 11:09:05

标签: c++ memory-management cocos2d-x

Thanx提前......我有问题,我们如何在cocos2dx中释放内存? 在我的游戏中,我的第一个场景占用了大量的内存,因为在这个场景上一次运行了很多动画,有很多动画,所以我很满意这个,但是当我们去下一个场景时,它不会释放以前使用的内存,这是我的问题所以当我们改变场景时我们如何释放前一场景使用的内存?

2 个答案:

答案 0 :(得分:0)

要在场景之间切换,您可以拨打pushScenereplaceScene

推送场景

如果你在两个场景之间推进,那么我建议你之间有一个加载场景。它应该是轻量级的,以便您有机会从旧场景中释放所有内容。这是onEnter(DidFinish)onExit(DidStart)方法派上用场的地方。

调用链是:

  1. oldScene->onExitDidStart()
  2. loadScene->onEnter()
  3. oldScene->onExit()< - 这是您释放所有内容的地方
  4. loadScene->onEnterDidFinish()< - 这是您加载新场景的地方
  5. newScene->onEnter()
  6. 等等......如果你已经正确管理了记忆,那么你不应该同时拥有2个沉重的场景。

    替换场景

    这是一个更容易的场景。您只需要确保为新场景尽可能少地加载,直到旧场景完全消失。即调用onEnterDidFinish()时,甚至调用后1帧。

答案 1 :(得分:0)

Cocos2d-x支持自动释放内存。例如,当您通过调用Sprite :: create()创建精灵时,它会将此精灵添加到自动释放池中。如果你没有添加这个精灵成为当前场景的孩子(或第n个水平孩子),它将被释放。
不要使用 new 创建对象,而是在调用下一个场景时使用create(),释放最后一个场景中的所有内容。