编辑器做出来的例子动画 在删除的时候 貌似还在内存中存在!!!!!
删除是如何删除的?
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();
你说这样?
还是没有用 一直往上在加!!!!
求助!








仔细检查。
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!
人呢 !!!! 你能拿我的资源 试一下 就可以看到了!