2010-10-05 30 views
1

Je reçois une erreur Flex ArgumentError: Erreur # 2025: Le DisplayObject fourni doit être un enfant de l'appelant.Flex 3 Erreur # 2025 lors de l'utilisation de removeChild

Voici ce que j'ai:

a) Je mets la variable lastButtonClicked au dernier bouton qui a été cliqué dans l'application principale.

private var lastButtonClicked:DisplayObject; 

    private function lastButtonClickedFunction(event:MouseEvent):void { 
     lastButtonClicked = event.currentTarget as DisplayObject; 

    } 

b) J'ai une TitleWindow ouverte et une option oui/non. J'ai un événement personnalisé renvoyer la réponse à l'application principale.

c) Dans l'application principale, j'essaie de supprimer lastButtonClicked en fonction des données envoyées par l'événement personnalisé. Donc, mon problème est dans cette fonction. Pour une raison quelconque, il ne me laissera pas enlever le bouton. Je reçois l'erreur 2025 à la place.

private function answerHandler(event:AnswerEvent):void { 
     if(event.answerCorrect == true){ 
      removeChild(lastButtonClicked); 
     } 
    } 

Des suggestions sur la façon de déboguer ce problème? L'événement personnalisé se déclenche bien. Comment réparer cette ligne: removeChild (lastButtonClicked); ?

Modifier: J'ai essayé hbox1.removeChild (lastButtonClicked) et cela a fonctionné. Le bouton approprié a été supprimé de l'application principale. Le problème est que tous les boutons ne sont pas dans hBox1. J'ai d'autres HBox. Donc, j'ai besoin de trouver une façon plus générique au lieu d'utiliser hBox1 dans la déclaration. J'ai fatigué this.removeChild (lastButtonClicked), mais cela n'a pas fonctionné. Je vous remercie.

Merci.

-Laxmidi

Répondre

0

Je l'ai résolu. J'ai fait une variable et l'ai définie au parent de lastButtonClicked.

privée var myParent: Object; myParent = lastButtonClicked.parent;

Puis dans mon answerHandler j'ai écrit:

myParent.removeChild (lastButtonClicked);

Merci.

-Laxmidi

+0

k, c'est celui-ci, répondu par Amarghosh, donc Laxmidi vous avez commencé à travailler, –

0

D'après ce que je comprends, il semble que vous avez les boutons dans un TitleWindow et le gestionnaire d'événements dans l'application. Vous voulez probablement appeler removeChild pour l'instance de TitleWindow (par exemple: titleWindow.removeChild(lastButtonClicked)) plutôt que depuis l'application.

+0

Salut Ravi Gummadi, Merci pour votre message. Le bouton que j'aimerais supprimer est dans l'application principale. (Il y a un bouton radio oui/non dans la TitleWindow, mais je n'ai rien à faire avec la TitleWindow.) J'ai essayé hBox1.removeChild (lastButtonClicked) et cela a fonctionné. Mais, le problème est que j'ai d'autres boutons qui ne sont pas dans hBox1. J'ai essayé this.removeChild (lastButtonClicked) mais cela n'a pas fonctionné. Si vous avez des suggestions, s'il vous plaît faites le moi savoir. Je vous remercie. – Laxmidi

+0

J'ai les boutons dans l'application principale dans plusieurs HBox. Les HBox sont, à leur tour, à l'intérieur d'une VBox appelée mainVBox. J'ai essayé mainVBox.removeChild (lastButtonClicked), mais cela n'a pas fonctionné non plus. – Laxmidi