- 本帖最后由 Shawn和月 于 2013-4-15 23:32 编辑 *
准备
从包含粒子系统的ccbi中读取节点,无论根节点即是该粒子,还是node或sprite等。载入后遍历所有子节点,将所有粒子setAutoRemoveOnFinish(true),并设置duration为10以内。
问题来了
当动画播完后从父节点删除,却未见系统任务管理器中的内存占用变少。
每次播放都要增加几十至近百K,时间稍长就能从23M增长到四五十M,无论在Win32还是真机都一样有这问题。
有效但有局限的方法
而如果是单独载入一次粒子并缓存,之后都做如下操作,就不会出任何问题。
local pqSrc = cachedPQ"PQ1"]
local pq = CCParticleSystemQuad:create()
– LuaProxy复制粒子属性,简单的n->setStartColor(o->getStartColor());之类操作
proxy:duplicate(pq, pqSrc, “CCParticleSystemQuad”)
pq:setAutoRemoveOnFinish(true)
因为texture重复载入么?
但CCTextureCache::addImage不会重复添加。
还是些别的原因呢?
只在2.0.4上试验并出此问题,还没在2.1.2上尝试。CocosBuilder版本为2.1。