UIHelper::createWidgetFromJsonFile加载的资源怎么释放呢

菜鸟求教了

老版本的使用的是UIHelper::purge()方法清理

新版本则使用void GUIReader::purge()方法。

清理reader之后注意还要清理纹理
CCTextureCache::sharedTextureCache()->removeAllTextures();

mark:14::14::14::14:

如果我每一个场景都是CocoStudio的GUI
那么我每一次切换场景都需要使用GUIReader::purge()么,还是说只要使用CCTextureCache::sharedTextureCache()->removeAllTextures(); 就好,只有不再需要使用CocoStudio的GUI的时候,才调用GUIReader::purge()???
那么释放应该写在新场景的onEnter么?还是说?

GUIReader::purgeGUIReader() ? 好像已经被标为 CC_DEPRECATED_ATTRIBUTE 了,还是用 destroyInstance 比较好。

不过这个函数是销毁单例吧。我觉的楼主关心的应该是切换场景后释放资源,这时候不应该调用 purgeGUIReader 吧。

哎哎,和你的第二句话想法相同……

GUIReader::purgeGUIReader()没有这函数吧,只有purge这函数吧,2.2.2

哦 我3.0beta

这个是在场景退出的时候才调用的,如果只是想将创建出来的控件给清理可以使用removeandclear方法。

removeandclear??? 没搜到这个函数啊

有点晕晕……
假如有场景A和场景B,两个都是使用CocoStudio做的
A切换B的时候
B init
A onExit
B onEnter
应该是这样子的顺序吧
那么我应该在B的onEnter里面调用
CCTextureCache::sharedTextureCache()->removeAllTextures();
至于 GUIReader::purge()
由于B场景也是CocosGUI,所以不需要调用GUIReader::purge()

这样子有错么 :2:

应该在A的 onExit 里调用。

removeandclear 是谁的函数啊 没找到

抱歉,我把意思混一起了,完整应该是void CCNode::removeFromParent()或void Widget::removeFromParent(),remove和clear。

楼主用gui加载的除了要将加载的所有控件都remove掉(即上一行的两个方法),

还要使用void GUIReader::purge()方法清理解析数据。
和CCTextureCache::sharedTextureCache()->removeAllTextures();清理所有的贴图资源。(如果你需要彻底清理掉所有的纹理才可用,否则请使用 void removeUnusedTextures();)

完蛋了,我又头晕了……

void GUIReader::purge()不只是释放单例,还会清理解释数据?
如果我没使用purge,而是再次调用UIHelper::createWidgetFromJsonFile加载另外一个资源,那么原来的解释数据还是会保留么?就变成了有不同的两份的解释数据?

别担心,这里的数据指的不是已经创建出来的控件,而是加载的文件。