2013-06-04 167 views
1

我試着做一個直升飛機場比賽,我有一個標題畫面添加到我的比賽,但是每當我試圖removeChild之按鈕不刪除 - 它給了我這個錯誤:閃爍亮AS3錯誤#2025

ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. 
at flash.display::DisplayObjectContainer/removeChild() 
at CopterScratch/gameStart() 
at flash.events::EventDispatcher/dispatchEventFunction() 
at flash.events::EventDispatcher/dispatchEvent() 
at fl.controls::LabelButton/keyUpHandler() 

這是我的代碼:

public function gameStart(e:MouseEvent):void { 
     removeChild(objTitleScreen); 
     if (btnStart.enabled){ 
      removeChild(btnStart); 
     } 
     removeChild(rbNormal); 
     removeChild(rbDifficult); 
     tmrMoveMap.start(); 
     tmrGravity.start(); 
     addChild(objHelicopter); 
    } 
+0

你能說明你把addChild()代碼放在哪裏嗎?此外,你的方法屬於哪個類。 –

回答

0

一個(或幾個)下述的; objTitleScreen,btnStart,rbNormal或rbDifficult ...不是定義函數'gameStart'的對象的子對象。本地函數'removeChild'期待一個孩子作爲參數,並且因爲它沒有得到一個而抱怨。在調用'gameStart'函數的類中運行下面的代碼,以查看哪些孩子有(假設每個孩子都被明確命名,如果不是這樣的話 - 從代碼中省略'.name')。

for (var i:uint = 0; i < this.numChildren; i++) { 
    trace('child at: ' + i + ' = ' + this.getChildAt(i).name); 
} 

this的AS3顯示列表上非常翔實的文章,您將學習如何解決您的問題。

+0

對不起,新的Flash AS3。感謝您的答覆。我在主要的「公共類直升機」功能中添加了addChilds,我應該將它們移動到gameStart函數嗎? – user2453775

1

你可以這樣做:

if (objTitleScreen.parent) 
    objTitleScreen.parent.removeChild(objTitleScreen); 

理想的情況是,你應該知道對象的父,這是否真的有必要。