2012-10-25 132 views
1

我想檢查孩子是否存在以及是否將其刪除。如果沒有做別的...我也打算做更多的孩子檢查...檢查孩子是否存在as3

stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown3); 

function onKeyDown3(event:KeyboardEvent):void 
{ 
    if(event.keyCode == Keyboard.BACK) 
    { 
     if (over.stage){ 
     event.preventDefault(); 
     removeChild(over); 
     gotoAndPlay(350, "Scene 1"); 
     }else { 
     event.preventDefault(); 
     gotoAndPlay(346, "Scene 1");   
     } 

    } 
} 

我試過了,但它不起作用。但我認爲它基本上顯示了我想要做的事情,但是如果對其他孩子來說還有更多其他事情。 「在」僅僅是一個影片剪輯

錯誤:

TypeError: Error #2007: Parameter child must be non-null. 
    at flash.display::DisplayObjectContainer/setChildIndex() 
    at Bike_safety_fla::MainTimeline/onKeyDown1()[Bike_safety_fla.MainTimeline::frame146:17] 
    at runtime::ContentPlayer/sendKeyUpDown() 
    at runtime::SimulatedMobileDeviceContentPlayer/onBack() 
+0

細說 「它不工作」?你會得到什麼錯誤?如果它是一個空引用異常,它是因爲在您將它從小孩中刪除之後,您並未將對「over」的引用歸爲空。但有不同的方法來解決這個問題,取決於你想要做什麼 –

+0

啊,我確實得到了這個錯誤,請提供一個解決方案來解決問題。檢查問題100%的錯誤 – Butterflycode

+0

'if(this.contains(over)){removeChild(over); }'如果你的意思是從顯示列表中刪除'over'。 –

回答

4

使用contains()來測試是否over是顯示列表上。

從級DisplayObjectContainer文檔:

Determines whether the specified display object is a child of the DisplayObjectContainer instance or the instance itself. The search includes the entire display list including this DisplayObjectContainer instance. Grandchildren, great-grandchildren, and so on each return true.

實現爲:

if (this.contains(over)) 
{ 
    removeChild(over); 
    gotoAndPlay(350, "Scene 1"); 
} 
else 
{ 
    gotoAndPlay(346, "Scene 1");   
} 
+0

上面列出的錯誤是當我這樣做時創建的。 – Butterflycode

+0

也許你的「over」已經爲空了?你正在檢查「over.stage」,而不檢查「over」是否爲空。 – Vesper

+0

我與else語句有問題,它執行不管。有沒有辦法像我這樣做...如果孩子不存在(但我希望它可以與多個孩子一起工作)所以,如果結束,根本不存在等 – Butterflycode