2013-02-08 37 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);