父母突然变为null3

时间:2013-02-08 06:40:22

标签: actionscript-3

几个月前我刚刚学会了AS3,很抱歉,如果这听起来很新手。

这是我的问题。我去使用removeChild,但是有一个错误说: ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子级。

所以,我跟踪了父母,它是“空”。但是当我试图追踪我拥有的每一个物体的父母时,它就出来了。那它为什么突然变成空?随便那个!你知道如何纠正这个吗?感谢。

4 个答案:

答案 0 :(得分: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实例的子列表中删除指定的子DisplayObject实例。作为parent.removeChild(child);

stage是父母的childMc父母。

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);
}

如果是这种情况,则此行stage.removeChild(mc);删除了mc 尝试mc child removeChild。已经删除了mc,因此发生错误。孩子必须从大多数下面移除。

更改为

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

如果你想明确回答。必须附上代码。

答案 1 :(得分:1)

以下是我如何防范错误#2025:

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

但一般情况下,请务必仅删除之前添加的DisplayObjects。

答案 2 :(得分:0)

您是否在调用removeChild之前的任何地方使用过addChild?

孩子应该在您调用removeChild的父母的显示列表中。

只要父级不在舞台上,父级总是为空。

答案 3 :(得分:0)

如果你想在不记得其父母的情况下放弃这个孩子,你可以这样做:

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