ArgumentError: Erro #2025: O DisplayObject fornecido deve ser um filho do erro do chamador - como
-
21-09-2019 - |
Pergunta
Eu tenho esse trecho de código dentro de uma função que verifica se existe um objeto no palco e o remove:
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);
}
}
Eu tentei mudar stage
com this
e root
Mas sempre receba este erro ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller
Solução
O erro sinais que você está tentando remover um DisplayObject
com removeChild
Aparentemente, isso não é um filho do DisplayObjectContainer
Este código é executado a partir de.
Uma maneira de resolver esse problema é verificar se o objeto que você está tentando remover é na verdade um filho do contêiner usando contains
. Você está fazendo isso por alguns dos objetos que está removendo (submitButton
e saveinfoButton
), mas não para alguns outros.
Tente embrulhar o removeChild
liga para txt
, ldr.content
e _closeButton
Em declarações if que usam contains
Para verificar se estes DisplayObject
s estão no recipiente.
Outras dicas
Tente com:
e.currentTarget.parent.removeChild(txt);
e.currentTarget.parent.removeChild(ldr.content)
etc.
Experimente isso:
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);
}
}
Você pode adicionar os dois itens para remoção no condicional com &&:
if (contains(submitButton && saveinfoButton)) {