几个月前我刚刚学习了 AS3,如果这对你来说听起来很新手,我很抱歉。
这是我的问题。我去使用removeChild,但是有一个错误说:ArgumentError:错误#2025:提供的DisplayObject必须是调用者的孩子。
所以,我追踪了父母,它是“空的”。但是当我试图追踪我拥有的每个对象的父对象时,结果还不错。那为什么突然变成null了?并且随机!你知道如何纠正这个吗?谢谢。
几个月前我刚刚学习了 AS3,如果这对你来说听起来很新手,我很抱歉。
这是我的问题。我去使用removeChild,但是有一个错误说:ArgumentError:错误#2025:提供的DisplayObject必须是调用者的孩子。
所以,我追踪了父母,它是“空的”。但是当我试图追踪我拥有的每个对象的父对象时,结果还不错。那为什么突然变成null了?并且随机!你知道如何纠正这个吗?谢谢。
以下是我如何防范错误 #2025:
if ( container.contains( displayObject ) )
container.removeChild( displayObject );
但一般来说,请务必只删除您之前添加的 DisplayObject。
仅供参考,我认为你有一个小错误。
下面的代码相同的错误。
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
父母的父母。
mc
是childMc
父母。
还是这个案子?
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 child removeChild。已删除 mc,因此发生错误。孩子必须从最下面移除。
改成
while(mc.numChildren)
{
mc.removeChildAt(0);
}
stage.removeChild(mc);
如果你想明确回答。必须附上代码。
在调用 removeChild 之前,您是否在任何地方使用过 addChild?
孩子应该在您调用 removeChild 的父母的显示列表中。
只要不在舞台上,父级始终为空。
如果你想在不记得它的父母是什么的情况下随意删除孩子,你可以这样做:
if( child.parent ) child.parent.removeChild( child );