ArgumentError:错误#2025:提供的DisplayObject必须是调用者错误的子节点 - AS

时间:2010-03-22 12:09:02

标签: actionscript-3 displayobject removechild

我在一个函数中有这个代码片段,它检查一个对象是否存在于舞台上并将其删除:

public function closeContent(e:MouseEvent):void { 
    removeChild(txt);
    removeChild(ldr.content);
    removeChild(_closeButton);
    container_mc.visible = false;
    statusText.text="";
    if (contains(submitButton)) {
        removeChild(submitButton);
    }
    if (contains(saveinfoButton)) {
        removeChild(saveinfoButton);
    }
}

我尝试使用stagethis更改root但始终收到此错误ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller

3 个答案:

答案 0 :(得分:3)

错误表示您尝试删除DisplayObject removeChild DisplayObjectContainercontains显然不是submitButton此代码执行的子代。

解决此问题的一种方法是使用saveinfoButton检查您要删除的对象是否实际上是容器的子对象。您正在为要移除的某些对象(removeChildtxt)执行此操作,但对其他一些对象则不行。

尝试在使用ldr.content的if语句中包含_closeButtoncontainsDisplayObject的{​​{1}}次来检查这些{{1}}是否为{{1}}在容器中。

答案 1 :(得分:0)

尝试:

e.currentTarget.parent.removeChild(txt);  
e.currentTarget.parent.removeChild(ldr.content)  
etc.

答案 2 :(得分:0)

试试这个:

public function closeContent(e:MouseEvent):void { 
    removeChild(txt);
    removeChild(ldr.content);
    removeChild(_closeButton);
    container_mc.visible = false;
    statusText.text="";
    if (contains(submitButton)) {
        removeChild(submitButton);
        removeChild(saveinfoButton);
    }
}

您可以使用&&:

添加两个要删除的项目
    if (contains(submitButton && saveinfoButton)) {