[]canvas下资源清理的问题

操作步骤
1.点击显示,界面展示出来。
2.点击销毁,界面关闭。
3.等待一段时间(30Szuo左右)
4.再次点击显示(这个时候就会出现皮肤丢失的情况,没出现就反复几次)
已邀请:

Apple

赞同来自:

建议每次显示前进行资源预加载

shiyang

赞同来自:

package {
    import laya.display.Stage;
    import laya.events.Event;
    import laya.net.Loader;
    import laya.ui.Button;
    import laya.utils.Handler;
    import laya.utils.Stat;
    
    import ui.TaskUI;
    
    import view.TestView;
    
    public class LayaUISample {
        
        
        private var btn1:Button;
        private var btn2:Button;
        
        private var taskView:TaskUI;
        
        
        public function LayaUISample() {
            //初始化引擎
            Laya.init(1334, 750);
            
            Laya.stage.alignH=Stage.ALIGN_MIDDLE;
            Laya.stage.alignV=Stage.ALIGN_CENTER;
            
            btn1 = new Button(null,"显示");
            btn2 = new Button(null,"销毁");
            btn1.labelColors = "#ffffff,#ffffff,#ffffff";
            btn2.labelColors = "#ffffff,#ffffff,#ffffff";
            btn1.width = btn2.width = 50;
            btn1.height = btn2.height = 20;
            
            btn1.x = 100;
            btn2.x = 150;
            
            Laya.stage.addChild(btn1);
            Laya.stage.addChild(btn2);
            
            btn1.on(Event.CLICK,this,onClick);
            btn2.on(Event.CLICK,this,onClick);
            
            Laya.loader.load([{url: "res/atlas/common.atlas", type: Loader.ATLAS}]);
            
            Stat.show();
        }
        
        private function onClick(e:Event):void
        {
            switch(e.currentTarget)
            {
                case btn1:
                    show();
                    break;
                case btn2:
                    hide();
                    break;
            }
        }
        
        private function show():void
        {
            //加载引擎需要的资源
            Laya.loader.load([{url: "res/atlas/task.atlas", type: Loader.ATLAS}], Handler.create(this, onLoaded));
        }
        
        private function hide():void
        {
            if(taskView)
            {
                taskView.destroy();
                taskView = null;
                Laya.loader.clearTextureRes("res/atlas/task.atlas");            
            }
        }
        
        private function onLoaded():void {
            //实例UI界面
            taskView = new TaskUI();
            taskView.y = 50 + taskView.pivotY;
            taskView.panel.vScrollBarSkin = null;
            Laya.stage.addChild(taskView);
        }
    }
}

OneWay

赞同来自:

Laya.loader.clearTextureRes("res/atlas/task.atlas"); 
改成Laya.loader.clearRes("res/atlas/task.atlas");  
应该就没问题了
 

yung

赞同来自:

是clearTextureRes+cacheAs导致的,引擎bug,等修复

要回复问题请先

商务合作
商务合作