0

REMOVED_FROM_STAGE 事件在对象实际从舞台中移除之前被触发。我正在寻找一种高效的方法来了解对象何时最终被移除。建议?

4

3 回答 3

2

您可以检查对象阶段值。

if (!object.stage) {
  //not added to display list
} 

触发时可能会设置一个 enterframe 侦听REMOVED_FROM_STAGE器。

object.addEventListener(Event.REMOVED_FROM_STAGE, removed, false, 0, true);

private function removed(e:Event):void {
    e.target.removeEventListener(Event.REMOVED_FROM_STAGE, removed);    
    e.target.addEventListener(Event.ENTER_FRAME, checkStage, false, 0, true);
}

private function checkStage(e:Event):void {
    if (!e.target.stage) {
        //object has been removed
        e.target.removeEventListener(Event.ENTER_FRAME, checkStage);
        //do something now it has been removed
    }
}
于 2012-03-03T06:04:16.630 回答
1

你是如何移除你的对象的?

重绘屏幕之前的最后一个事件是渲染事件,您会看到您的对象已被删除。

你不能不听吗?就像从舞台上移除一个对象一样,舞台将不得不重新绘制自己。

stage.invalidate();
stage.addEventListener(Event.RENDER, doAfter, false, 0, true);
于 2012-03-03T21:20:43.263 回答
0

您可以随时检查目标对象的父属性是否为空。何时以及如何检查取决于您的应用程序结构等。

if (targetObject !== null && targetObject.parent === null) {
    // target object has been removed from display list
} else {
    // target object is still in display list
}
于 2012-03-03T09:05:18.333 回答