2012-11-25 27 views
0

我想檢測對象是否完全從階段中刪除。我在這裏和其他地方檢查了很多答案&不知道如何注意這個物體真的從舞臺上移開(我的意思是它不再顯示在舞臺上)。 下面的代碼是我的最後一次測試:檢測對象是否真的從階段中刪除

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:Canvas width="100%" height="50%" backgroundColor="gray" id="c1"> 
     <mx:Canvas id="cChild" backgroundColor="black" width="20" height="20" 
     left="20" top="20" 
     removedFromStage="trace('removed from stage ' + event.target)" 
     removed="trace('removed ' + event.target)"> 
     </mx:Canvas> 
    </mx:Canvas> 
    <mx:Canvas width="100%" height="50%" backgroundColor="white" id="c2"> 
    </mx:Canvas> 
    <mx:Button label="add child" click="c2.addChild(c1)" /> 
    <mx:Button label="add child2" click="addChild(c1)" /> 
</mx:Application> 

我不明白,我發現在控制檯輸出:

removed MainFlex0.c1.cChild.border 
    - before click 'add child' 
removed from stage MainFlex0.c1.cChild 
removed MainFlex0.c2.c1.cChild.border 
    - after click 'add child', before 'add child2' 
removed from stage MainFlex0.c2.c1.cChild 
removed MainFlex0.c1.cChild.border 
    - after click 'add child2' 

是任何情況下,我可以檢查並確保對象實際上是「即將從舞臺上移除「?

薩蘭

+0

如果有人讀過這個問題,請檢查是否在您的平臺上第一個REMOVED事件也是在沒有任何理由的情況下在啓動時觸發的。 – Saram

回答

0

removedFromStage被稱爲將項目從舞臺上刪除之前。如果您在該事件處理程序中沒有執行任何操作,則該元素將被刪除。

+0

正如你所看到的,事件被稱爲兩次,但項目仍然在舞臺上。 – Saram

+0

當您調用addChild將某些內容添加到舞臺上的其他容器時,它會從其父項中移除該子項,這將觸發事件。所以這個孩子實際上從舞臺上被移除了一段時間,然後被添加到另一個容器中。 –

+0

我明白舞臺經理的背景。問題是,如何注意,該對象是真正從舞臺上刪除。我需要與我的代碼不一致,並且如果對象從舞臺上永久移除,而不是由舞臺管理員或stg調動,請執行操作。 btw。注意,在我的示例REMOVED事件的開始時沒有任何原因觸發 - 是否正常? – Saram

0
if(!c1.stage){ 
// it is not on stage 
}