几个月前我刚刚学会了AS3,很抱歉,如果这听起来很新手。
这是我的问题。我去使用removeChild,但是有一个错误说: ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子级。
所以,我跟踪了父母,它是“空”。但是当我试图追踪我拥有的每一个物体的父母时,它就出来了。那它为什么突然变成空?随便那个!你知道如何纠正这个吗?感谢。
答案 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
父母。
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);
}
如果是这种情况,则此行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 );