AS3:确定何时从舞台中删除DisplayObject?

时间:2012-03-03 03:20:46

标签: actionscript-3 events stage

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

3 个答案:

答案 0 :(得分:2)

您可以检查对象阶段值。

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

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

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
    }
}

答案 1 :(得分:1)

你是如何移除物体的?

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

你可以不听吗?好像从舞台上移除了一个对象,舞台必须重绘自己。

stage.invalidate();
stage.addEventListener(Event.RENDER, doAfter, false, 0, true);

答案 2 :(得分:0)

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

if (targetObject !== null && targetObject.parent === null) {
    // target object has been removed from display list
} else {
    // target object is still in display list
}