gpt4 book ai didi

actionscript-3 - 为什么删除事件监听器不起作用?

转载 作者:行者123 更新时间:2023-12-04 20:52:58 24 4
gpt4 key购买 nike

我的构造函数中有这个:

addEventListener(Event.REMOVED_FROM_STAGE, actualDestroy);

这实际上是Destroy:
    public function actualDestroy(e:* = null){
removeEventListener(Event.REMOVED_FROM_STAGE,actualDestroy);
if(this.parent){
this.parent.removeChild(this);
}
}

问题是我得到错误:错误#2094:事件调度递归溢出。如果 this.parent 不存在,为什么 removechild 会继续被调用?为什么删除事件监听器不起作用?

最佳答案

事件的名称具有误导性。 removedFromStage ,根据文档,是“当显示对象为 即将从显示列表中删除 时调度”。换句话说,这就是您的代码中发生的事情:

  • 在您的代码中的某处,您调用 parent.removeChild(this)
  • actualDestroy立即被调用。此时,对象仍在显示列表中 , 所以 this.parent != null
  • actualDestroy ,您调用parent.removeChild(this)再次。
  • 转到步骤 2

  • 所以要解决这个问题,你可能想重构你的代码(从显示列表中删除自己的对象从来都不是一个好主意),或者可能使用一些 bool 值,如 beingRemoved检查对象是否已经从列表中删除。在这种情况下,请不要调用 parent.removeChild(this)actualDestroy .

    关于actionscript-3 - 为什么删除事件监听器不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8252211/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com