原生调用 cc.animate动作之后如果加上 .repeatForever() 然后在移除动画后,stopAllActions(), 然后执行cc.director.purgeCachedData(), 动画引用的资源无法释放,显示存在引用
如果调用 cc.repeatForever( cc.animate() ) 在移除后则会正常释放引用的资源
这是一个隐藏的大坑.
原生调用 cc.animate动作之后如果加上 .repeatForever() 然后在移除动画后,stopAllActions(), 然后执行cc.director.purgeCachedData(), 动画引用的资源无法释放,显示存在引用
如果调用 cc.repeatForever( cc.animate() ) 在移除后则会正常释放引用的资源
这是一个隐藏的大坑.
能否用代码说明一下?另外,你说的 原生调用 指的是?
呃。。。代码就是上面那些,要更完整的话就是
var nod = new cc.Node()
var animation = new cc.Animation(frames, time, 1);
nod.runAction( cc.animate(animation).repeatForever() );
//上面运行后动画在不断播放,然后切换地图时调用
nod.stopAllActions();
nod.removeFromParent();
cc.director.purgeCachedData();
这时log打印出来的信息是frames中使用到的图片还在被引用
nod.runAction( cc.repeatForever(cc.animate(animation) ));
同样的代码,把runAction替换成上面的,purgeCachedData之后打印出来的就是frames中使用到的图片被remove
代码如上