[]Animation创建和销毁的问题

同样的代码,第一次创建就可以显示动画,然后当使用了Loader.clearRes之后再次创建就怎么都显示不了,是哪里用错了么?求指点
附件里上传了测试工程,打开后先按A键可以看到屏幕有两条鱼,然后再按空格将其彻底移除,然后再按A键就不显示了,以下是代码部分
环境:1.7.17_Beta
语言:as3
private var testAnim1:Animation;
private var testAnim2:Animation;

public function LayaSample() {
//初始化引擎
Laya.init(1136, 640,WebGL);

trace("ok...");

Laya.stage.on(Event.KEY_DOWN, this, this.onKeydown);
}

private function onKeydown(event:Event):void
{
var self:* = this;

if(event.keyCode === Keyboard.SPACE)
{
//移除动画
if(testAnim1)
{
testAnim1.clear();
testAnim1.removeSelf();
testAnim1 = null;

testAnim2.clear();
testAnim2.removeSelf();
testAnim2 = null;


Loader.clearRes("res/fish_1/stand.atlas", true);
Loader.clearRes("res/fish_1/attack.atlas", true);

trace("移除动画完成");
}


}
else if(event.keyCode === Keyboard.A)
{
//加载动画
Laya.loader.load(["res/fish_1/stand.atlas","res/fish_1/attack.atlas"], Handler.create(this, this.onAnimAtlasLoaded));
}
}

private function onAnimAtlasLoaded():void
{

testAnim1 = new Animation();
testAnim1.loadAnimation("res/fish_1/fish_1.ani");

Laya.stage.addChild(testAnim1);
testAnim1.play(0,true,"stand_" + 0);

testAnim1.pos(500, 300);

//------------------------------------------------------------------------------
testAnim2 = new Animation();
testAnim2.loadAnimation("res/fish_1/fish_1.ani");

Laya.stage.addChild(testAnim2);
testAnim2.play(0,true,"attack_" + 0);

testAnim2.pos(400, 400);

trace("创建动画完成");

}

 
已邀请:

w1114367261

赞同来自:

你不能直接把你的资源缓存给清理掉啊!你资源清理掉了当然他第二次不能加载出来了!
 

suteam

赞同来自:

这...那我如何释放动画所占用的内存?难道加载以后就一直得留在内存中么?而且就算我清掉了但是我再次加载为啥就不能重新加回来呢?

w1114367261

赞同来自:

/**
         * 清理指定资源地址的缓存。
         * @param    url 资源地址。
         * @param    forceDispose 是否强制销毁,有些资源是采用引用计数方式销毁,如果forceDispose=true,则忽略引用计数,直接销毁,比如Texture,默认为false
         */
        public static function clearRes(url:String, forceDispose:Boolean = false):void {
Loader.clearRes清理你把里面的第二个参数设置成false试试
如果还是不行的话你就把资源清理方法改用一下这个方法!还有如果你的图片小于512的话是销毁不了的
https://ldc.layabox.com/doc/?nav=zh-as-3-2-7

suteam

赞同来自:

clearRes这个方法试过了false,结果是一样的,依旧第二次无法显示,另外图集大小都是大于512的,除非是不加这句话,这个也算是一个再普通不过的需求了吧,我的目的就是要在一定条件下清除动画所占用的内存,因为我发现如果不加clearRes这个方法,那么动画会一直占用着内存,那我这个2d游戏有很多这样的动画图集文件,内容多了都没法清除,这肯定不对呀,结果加了clearRes导致动画第二次无法正常显示。。。

suteam

赞同来自:

多谢指导,这次换成了clearTextureRes可以正常第二次显示了,但我发现内存并没有完全释放还留了一部分,这块是不是只能先这样了,没有办法完全将动画资源清除掉?

要回复问题请先

商务合作
商务合作