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);
    }
    if (contains(saveinfoButton)) {
        removeChild(saveinfoButton);
    }
}

我试图改变但总是得到这个stage错误thisrootArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller

4

3 回答 3

3

您尝试删除的错误信号DisplayObject显然removeChild不是DisplayObjectContainer执行此代码的子项。

解决此问题的一种方法是检查您尝试删除的对象是否实际上是使用contains. 您正在为您要删除的一些对象(submitButtonsaveinfoButton)执行此操作,但不是为其他一些对象。

尝试包装对,和if的removeChild调用,用于检查这些s 是否在容器中。txtldr.content_closeButtoncontainsDisplayObject

于 2010-03-23T16:35:29.407 回答
0

尝试:

e.currentTarget.parent.removeChild(txt);  
e.currentTarget.parent.removeChild(ldr.content)  
etc.
于 2010-03-23T11:35:43.147 回答
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)) {
于 2012-09-10T00:53:15.500 回答