ArgumentError: Error # 2025: Il DisplayObject fornito deve essere un figlio dell'errore chiamante - AS
-
21-09-2019 - |
Domanda
Ho questo frammento di codice all'interno di una funzione che controlla se un oggetto esiste sul palco e lo rimuove:
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);
}
}
Ho provato a cambiare stage
con this
e root
ma sempre ottenere questo ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller
errore
Soluzione
I segnali di errore che si sta tentando di rimuovere un DisplayObject
con removeChild
che a quanto pare non è un figlio del DisplayObjectContainer
questo codice viene eseguito da.
Un modo per risolvere questo problema è quello di verificare se l'oggetto che si sta tentando di rimuovere è in realtà un bambino del contenitore utilizzando contains
. Si sta facendo questo per alcuni degli oggetti che si sta rimuovendo (submitButton
e saveinfoButton
), ma non per altri.
Provare avvolgendo le chiamate removeChild
per txt
, ldr.content
e _closeButton
se le istruzioni che utilizzano contains
per verificare se queste DisplayObject
s trovano nel contenitore.
Altri suggerimenti
Prova con:
e.currentTarget.parent.removeChild(txt);
e.currentTarget.parent.removeChild(ldr.content)
etc.
Prova questo:
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);
}
}
Si può essere in grado di aggiungere due elementi per la rimozione al condizionale con &&:
if (contains(submitButton && saveinfoButton)) {