一个类的成员变量 , Sprite *s;
在初始化代码里 s=Sprite::create(“xxx.png”); this->addChild(s); //也试过 auto xxx=Sprite::create(“xxx.png”); s=xxx; this->addChild(s);
后面执行了个操作 this->removeChild(s); //也试过 this->removeChild(s,true);
s=Sprite::create(“yyy.png”); this->addChild(s);
但是xxx.png这块内存就是没释放掉 , 以前没关注过 , 但这次这个图片很大 , 一下子就十几M内存没释放 , 比较严重了 , 原因在什么地方呢?
removeChild并没有删除纹理缓存。
你要再调用:
void TextureCache::removeUnusedTextures(); ``` 引擎继续帮你缓存这块纹理的目的是没办法预知你接下来是否还会再用。
十分感谢 , 一下就解释到点子上了
新手时期也遇到过这个疑问。。
cocos2dx的文档太少了。。。。
只能靠阅读源代码啊这玩意 , 我那天晚上试了下purgeDataCache解决了这个内存问题 , 但是拿它去网上搜 , 没一个对题的结果 , 但一翻源代码就豁然开朗 . 也用了很久了 , 做出几个成品 , 但基本上是靠Sprite和STL结合完成逻辑的 ,偶尔用下定时器,特效和动画 , 很多特性感觉不如自己封装STL数据结构来的舒心 , 所以一直只掌握了cocos2dx的小小的子集 , 需要什么东西再去学 , 我这种人去面试估计都没人要 , 起码要背下几个常用api面试才会过吧
游戏最主要还是逻辑,cocos2dx只是UI上面的东西,再复杂也复杂不到哪里去的,用多了什么都做得出来。
现在是游戏程序的结构,逻辑之类的更让我烦心,也不知道怎么做才是最好。