我在构造函数中有这个:
addEventListener(Event.REMOVED_FROM_STAGE, actualDestroy);
Run Code Online (Sandbox Code Playgroud)
这在realDestroy中:
public function actualDestroy(e:* = null){
removeEventListener(Event.REMOVED_FROM_STAGE,actualDestroy);
if(this.parent){
this.parent.removeChild(this);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我得到错误:错误#2094:事件调度递归溢出.如果this.parent不存在,为什么removechild会被调用?为什么不删除事件侦听器?
该事件的名称具有误导性。removedFromStage根据文档,“当显示对象即将从显示列表中删除时调度”。换句话说,这就是您的代码中发生的情况:
parent.removeChild(this)actualDestroy立即被调用。此时该对象仍在显示列表中,因此this.parent != nullactualDestroy,你parent.removeChild(this)再次打电话。因此,要解决此问题,您可能需要重构代码(从显示列表中删除自身的对象无论如何都不是一个好主意),或者可能使用一些布尔值来beingRemoved检查该对象是否已从列表中删除。在这种情况下,请勿parent.removeChild(this)致电actualDestroy。
| 归档时间: |
|
| 查看次数: |
429 次 |
| 最近记录: |