我的removeAllChildren函数出错

时间:2013-10-26 23:00:47

标签: actionscript-3 sprite

我认为我应该聪明并制作/复制一个很好的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);


                }

        }

1 个答案:

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