2010-03-22 17 views
0

Je cet extrait de code dans une fonction qui vérifie si un objet existe sur la scène et l'enlève:ArgumentError: Erreur # 2025: Le fourni DisplayObject doit être un enfant de l'erreur de l'appelant - 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); 
    } 
} 

I essayé de changer stage avec this et root mais toujours obtenir cette erreur ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller

+0

Il serait utile aux lecteurs beaucoup si vous formatez le code. –

Répondre

3

T L'erreur indique que vous essayez d'enlever un DisplayObject avec removeChild qui apparemment n'est pas un enfant du DisplayObjectContainer ce code est exécuté à partir de.

Une façon de résoudre ce problème consiste à vérifier si l'objet que vous essayez de supprimer est en réalité un enfant du conteneur en utilisant contains. Vous le faites pour certains des objets que vous supprimez (submitButton et saveinfoButton), mais pas pour d'autres.

Essayez d'envelopper les removeChild appels à txt, ldr.content et _closeButton si les déclarations qui utilisent contains pour vérifier si ces DisplayObject s sont dans le conteneur.

0

Essayez avec:

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

merci pour votre réponse. J'ai essayé votre suggestion, mais toujours la même erreur ... – Dimitree

0

Essayez ceci:

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

Vous pourriez être en mesure d'ajouter les éléments à supprimer dans le conditionnel avec & &:

if (contains(submitButton && saveinfoButton)) {