2013-02-08 66 views
0

我剛剛在幾個月前學會了AS3,所以很抱歉,如果這聽起來對你來說是新手。父母突然變爲空作爲3

這是我的問題。我去使用removeChild,但有一個錯誤說: ArgumentError:錯誤#2025:提供的DisplayObject必須是調用者的子項。

所以,我追溯到父母,它是「空」。但是,當我試圖追蹤每一個物體的父母時,它就出來了。那爲什麼它突然變爲空?隨機在那!你有什麼想法如何糾正這一點?謝謝。

回答

0

在調用removeChild之前,你有沒有使用addChild?

孩子應該位於您要調用removeChild的父級顯示列表中。

只要父母不在舞臺上,父母總是空。

1

僅供參考,我認爲你有一點小錯誤。

下面的代碼相同的錯誤。

ArgumentError:錯誤#2025:提供的DisplayObject必須是調用者的子項。

這是你的情況嗎?

var mc:MovieClip = new MovieClip(); 
addChild(mc); 
var childMc:MovieClip = new MovieClip(); 
mc.addChild(childMc); 

//this line wrong. 
stage.removeChild(childMc); 

如果你的情況下,stage.removeChild(childMc);變化mc.removeChild(childMc);

removeChild()手段從DisplayObjectContainer實例的子列表中指定的child DisplayObject實例。 as parent.removeChild(child);

stagechildMc家長的父母。

mcchildMc親本。

或這種情況?

var mc:MovieClip = new MovieClip(); 
addChild(mc); 
var childMc:MovieClip = new MovieClip(); 
mc.addChild(childMc); 

stage.removeChild(mc); 
while(mc.numChildren) 
{ 
    mc.removeChildAt(0); 
} 

如果這種情況下,MC是由該行stage.removeChild(mc); 試圖mc的孩子removeChild之去除。已經移除了mc,所以發生錯誤。孩子必須從下面的大部分中刪除。

變化

while(mc.numChildren) 
{ 
    mc.removeChildAt(0); 
} 
stage.removeChild(mc); 

如果你想清楚地回答。必須附上一個代碼。

1

下面是如何防範錯誤#2025:

if (container.contains(displayObject)) 
    container.removeChild(displayObject); 

但在一般情況下,請務必只刪除您以前添加的DisplayObject。

0

如果你想刪除與野生放棄無需記住其母公司會發生什麼是孩子,你可以這樣做:

if(child.parent) child.parent.removeChild(child);