ArgumentError: Error # 2025: El DisplayObject proporcionado debe ser un hijo de la persona que llama error - AS
-
21-09-2019 - |
Pregunta
Tengo este fragmento de código dentro de una función que comprueba si existe un objeto en el escenario y lo elimina:
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);
}
}
He intentado cambiar stage
con this
y root
pero siempre obtener este error ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller
Solución
Las señales de error que usted está tratando de eliminar un DisplayObject
con removeChild
que aparentemente no es un hijo de la DisplayObjectContainer
este código se ejecuta desde.
Una forma de resolver este problema es comprobar si el objeto que está intentando quitar es en realidad un niño del contenedor utilizando contains
. Usted está haciendo esto para algunos de los objetos va a eliminar (submitButton
y saveinfoButton
), pero no para otros.
Trate de envolver las llamadas removeChild
para txt
, ldr.content
y _closeButton
en si las declaraciones que el uso contains
Para comprobar si estas DisplayObject
s están en el contenedor.
Otros consejos
Trate con:
e.currentTarget.parent.removeChild(txt);
e.currentTarget.parent.removeChild(ldr.content)
etc.
Prueba esto:
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);
}
}
Es posible que pueda agregar dos elementos para la eliminación de la condicional con &&:
if (contains(submitButton && saveinfoButton)) {