REMOVED_FROM_STAGE事件在实际从舞台中删除之前触发。我正在寻找一种高效的方法来了解最终何时移除对象。建议?
答案 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
}