2010-03-22 39 views
0

我有检查,如果在舞台上存在的对象并将其删除函数内部的代码片段:引发ArgumentError:错误#2025:提供的DisplayObject必须是调用错误的孩子 - AS

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

我试图改变stagethisroot但总是收到此错误ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller

+0

这将有助于读者很多,如果你格式化代码。 – 2010-03-22 16:49:01

回答

3

ŧ他错误的信号,你试图删除DisplayObjectremoveChild,这显然不是DisplayObjectContainer该代码执行的孩子。

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

尝试中,如果使用contains语句来检查这些DisplayObject S是否是容器包装的removeChild呼吁txtldr.content_closeButton

0

与尝试:

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

感谢您的回答。尝试了你的建议,但仍然得到同样的错误... – Dimitree 2010-03-23 12:47:42

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)) { 
相关问题