我在一个函数中有这个代码片段,它检查一个对象是否存在于舞台上并将其删除:
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
和this
更改root
但始终收到此错误ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller
答案 0 :(得分:3)
错误表示您尝试删除DisplayObject
removeChild
DisplayObjectContainer
,contains
显然不是submitButton
此代码执行的子代。
解决此问题的一种方法是使用saveinfoButton
检查您要删除的对象是否实际上是容器的子对象。您正在为要移除的某些对象(removeChild
和txt
)执行此操作,但对其他一些对象则不行。
尝试在使用ldr.content
的if语句中包含_closeButton
,contains
和DisplayObject
的{{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)) {