我认为我应该聪明并制作/复制一个很好的removeAllChildren函数。但现在我得到了#34;错误#2069:Loader类没有实现这种方法"如果我正确地理解它是因为我在Sprite中加载了一张图片。 (但我现在几乎可以肯定,当我构建这个功能时,它可以使用相同类型的图片。)我无法弄清楚如何绕过它。认为捕获错误应该以某种方式起作用,但是它没有成功。或者是我做错了什么?
这是R class中的图片
public static var picture:Class;
[Embed(source="picture.png")]
孩子:
private var bg:Sprite=new R.picture;
canvas.addchild(bg);
我的移除孩子功能:
public static function removeAllChildren(doc:*):void {
while(doc.numChildren){
if (doc.getChildAt(0) is DisplayObjectContainer)
removeAllChildren(doc.getChildAt(0));
doc.removeChildAt(0);
}
}
答案 0 :(得分:1)
您发送的removeAllChildren函数参数类型为Loader
来自Loader Reference的
Loader类会覆盖它继承的以下方法, 因为Loader对象只能有一个子显示对象 - 显示它加载的对象。调用以下方法会抛出一个 异常:addChild(),addChildAt(),removeChild(),removeChildAt(), 和setChildIndex()。要删除已加载的显示对象,您必须 从其父DisplayObjectContainer子项中删除Loader对象 阵列。
public static function removeAllChildren(doc:*):void {
if(doc is Loader && doc.parent != null)
{
doc.parent.removeChild(doc);
return;
}
while(doc.numChildren){
if (doc.getChildAt(0) is DisplayObjectContainer){
removeAllChildren(doc.getChildAt(0));
}
doc.removeChildAt(0);
}
}