编辑器做出来的例子动画 在删除的时候 貌似还在内存中存在!

编辑器做出来的例子动画 在删除的时候 貌似还在内存中存在!!!!!

删除是如何删除的?

armature的动画除了需要removeArmatureFileInfo之外还要清理对应使用到的精灵帧缓存(spriteFrameCache)和图片缓存(TextureCache)。

ActionManager::purge();
CCTextureCache::sharedTextureCache()->removeAllTextures();
CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFrames();
CCArmatureDataManager::sharedArmatureDataManager()->purge();

????啥意思?

顺序错了,反过来

这些内容也全都加进去了 可是貌似还是会一点点加上去!

你调的顺序错了

清理texture应该最后才清。

应当逐级来清理。

先清理Armature相关的数据
然后精灵帧,最后才是纹理资源

ActionManager::purge();
CCArmatureDataManager::sharedArmatureDataManager()->purge();
CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFrames();
CCTextureCache::sharedTextureCache()->removeAllTextures();
你说这样?

还是没有用 一直往上在加!!!!

求助!:3::3::3::3::3::3::3::3::3:

仔细检查。

1.动画节点remove了没有。

2.哪些资源清理了,哪些没有

3.没被清理的资源引用计数为1吗,为何引用计数不为1?是在哪里引用了。

void LoginServerLayer::AnimationEventWeather(CCArmature *armature, MovementEventType movementType, const char movementID)
{
std::string id = movementID;
if(id.compare(“cast”) == 0&&movementType ==COMPLETE)
{
armature->getAnimation()->play(“recast”);
}
if(id.compare(“recast”) == 0&&movementType ==LOOP_COMPLETE)
{
removeChild(armature,true);
CCArmatureDataManager::sharedArmatureDataManager()->purge();
CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFrames();
CCTextureCache::sharedTextureCache()->removeAllTextures();
char sz;
for (int i=2;i<8;i++)
{
sprintf(sz,“animation/TX_tianqi%d/TX_tianqi%d.ExportJson”,i,i);
CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo(sz);
}
char sz;
sprintf(sz,“TX_tianqi%d”,/rand()%5+2/2);
CCArmature
ccArmatureWeather = CCArmature::create(sz);
ccArmatureWeather->getAnimation()->play(“cast”);
ccArmatureWeather->setPosition(ccp(480,360));
ccArmatureWeather->getAnimation()->setMovementEventCallFunc(this,movementEvent_selector(LoginServerLayer::AnimationEventWeather));
addChild(ccArmatureWeather);
return;
}
} 我就做了个无线循环啊

就是个简单的例子 就一直会往上加 换成普通的动画不加粒子的 就没有往上加

CCTextureCache::sharedTextureCache()->removeAllTextures();

留意下执行这里的时候,console应该会列出被清理掉的图片。
看下是不是哪些图片没被清理。

跟踪进这句代码里边,看armature用到的图片清理了没有。

你的2d-x版本是多少?
记得有个比较旧的版本(好像是2.2.2)的Armature会内存泄露

我用的2.2.3的 !以前的版本动画都会泄露的!2.2.3动画貌似就没有泄露了! 可是粒子动画貌似还会有e!

人呢 !!!! 你能拿我的资源 试一下 就可以看到了!