Egret社区
10银子
本帖最后由 wqb55 于 2019-2-20 14:43 编辑

对象可否自己倒计时后销毁自己

各位前辈,继承 egret.DisplayObject 的对象
可否使用 this.addEventListener(egret.Event.ENTER_FRAME, this.OnEnterFrame, this); 来倒计时后自己销毁自己,以便被内存回收?
如果有?自焚的逻辑如何触发?谢谢!
=============================================================
论坛里有关销毁的问题有人说,把对象赋值为null;"

可是我情况是:
class Timer:egret.DisplayObject{
    public static NewInstance():void{
        new Timer();
    }
    public constructor() {
        super();
        this.addEventListener(egret.Event.ENTER_FRAME, this.OnEnterFrame, this);
    }
    OnEnterFrame(e: egret.Event) {
        if(满足条件){
            如何自动销毁自己
        }
    }
}
是通过一个静态函数实例化,并没有在哪里存储,所以也无法在哪里设置为null,也没有使用addChild()。
如何实现让这个类在一定时间后不占用资源,能顺利被GC.
谢谢!
仅仅 this.removeEventListener(egret.Event.ENTER_FRAME, this.OnEnterFrame, this);
能不能被GC回收


分享到 :
0 人收藏

2 个回复

倒序浏览
asurance  渐入佳境 | 2019-2-19 20:44:23
如果只是挂在父节点上,可以尝试this.parent.removechild(this)。保险一点的话可以先检验parent是否有效
wqb55  登堂入室 | 2019-2-20 10:29:22
asurance 发表于 2019-2-19 20:44
如果只是挂在父节点上,可以尝试this.parent.removechild(this)。保险一点的话可以先检验parent是否有效 ...

谢谢,可是我发现不需要addChild到节点,ENTER_FRAME事件也能运行,所以并没有使用addChild
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部