Egret社区

关于RES.getResAsync的问题

2016-5-20 15:30
32161
1银子
这是一个ROLE类,显示一个玩家

class Role  extends egret.DisplayObjectContainer{
    private _num: number = 0;
    private _mc: egret.MovieClip;
        public constructor()
        {
        super();
        this.addEventListener( egret.Event.ADDED_TO_STAGE, this.onAdded, this );
        this.addEventListener( egret.Event.REMOVED_FROM_STAGE, this.onRemoved, this );

        }
        private onAdded(e:egret.Event):void
        {
        console.log( "onAdded..........." );
       //没有加载1_hero_battle_json和1_hero_battle_png这两个资源,通过异步加载调用onEnd,请看onEnd代码注释
        if ( !RES.getRes( "1_hero_battle_json" ) )
        {
            RES.getResAsync( "1_hero_battle_json", this.onEnd, this );
            RES.getResAsync( "1_hero_battle_png", this.onEnd, this );
        }
        }
        private onRemoved(e:egret.Event):void
        {
        console.log( "onRemoved..........." );
        this.removeEventListener( egret.Event.ADDED_TO_STAGE, this.onAdded, this );
        this.removeEventListener( egret.Event.REMOVED_FROM_STAGE, this.onRemoved, this );
        }
        private onEnd(data:any, key:string):void
        {
        this._num++;
        console.log( ".............num:" + this._num );
       //2个资源加载完毕,调用initRole,把这个玩家的动画显示出来。
        if(this._num == 2)
        {
            this.initRole();
        }
        }
        private initRole():void
        {

        var data = RES.getRes( "1_hero_battle_json" );
        var texture = RES.getRes( "1_hero_battle_png" );
        var mcFactory = new egret.MovieClipDataFactory( data, texture );
        this._mc = new egret.MovieClip( mcFactory.generateMovieClipData( "7_attack" ) );
        this.addChild( this._mc );
        console.log( "init..........." );
        }
}

问题是:
        this._role = new Role();
        this.addChild( this._role );
        this.removeChild( this._role );
        this._role = null;

我把this._role立马removeChild ,它还是能收到异步加载完成,并且最终会生成movieclip。egret会把this._role自动释放掉吗?

分享到 :
1 人收藏

1 个回复

倒序浏览
yjtx  官方团队 | 2016-5-20 16:45:43
释放不是删除或者设置成null后就会立马执行的,浏览器会根据情况不定时的去清理下,如果有加载、创建等操作,需要自己加相关关闭的代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部