【已解决】CCTextureCache释放的问题!

CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo(); 打出来是

Resources\CloseSelected.png rc=1 id=5 40 x 40 @ 32 bpp => 6 KB
Resources\CloseNormal.png rc=1 id=6 40 x 40 @ 32 bpp => 6 KB
cocos2d: CCTextureCache dumpDebugInfo: 5 textures, for 628 KB (0.61 MB)

然后我点击按钮

remove掉当成场景和层上的所有东西,并释放了!

Scene_cl什么东西都没有,在Scene_cl::onEnter中打印,最后的结果还是

Resources\CloseSelected.png rc=1 id=5 40 x 40 @ 32 bpp => 6 KB
Resources\CloseNormal.png rc=1 id=6 40 x 40 @ 32 bpp => 6 KB
cocos2d: CCTextureCache dumpDebugInfo: 5 textures, for 628 KB (0.61 MB)

怎么才能释放cache里面的资源,而且我是局部添加的,按理说析构之后会被释放掉,更何况我还手动调用了一次remove,为什么切换场景之后数据还在!求大鸟讲解下,版本cocos2d-x2.2.0

2.2,换3.0吧!
Director::getInstance()->getTextureCache()->removeUnusedTextures();

这样算是手动释放了吧。我就想知道他的释放机制!释放了节点没有把资源从缓存删掉么?

要调用cache的移除方法

是这样的,this->removeAllChildrenWithCleanup(true)只是调用了

    this->stopAllActions();
    this->unscheduleAllSelectors();
```

并没有调用移除纹理的操作。

纹理的移除是在CCDirector::sharedDirector()->end();
这会在mainloop中调用purgeDirector();
这个函数会调用一些清理的动作,其中包括:
    CCTextureCache::purgeSharedTextureCache();
```

在这里纹理才会被清除。

当然你可以在别的地方手动调用它。

不知道我说的清楚么。。。

了解了!原来纹理只会在最后被释放!要不就是手动调用释放。我应该知道怎么处理好了。谢谢