2010-10-13 5 views
0

Je développe une application AIR. Dans l'application principale, j'ai un chargeur de module 'mainModuleLoader'. Je crée des modules en tant que fichiers mxml distincts à l'aide de la balise <mx:Module>. Et je charge dynamiquement un tel module dans MainModuleLoader en utilisant ActionScript. Tout fonctionne bien.Décharger le module de gestion des événements en flex

Pour le module que je crée en tant que fichiers mxml, j'aimerais savoir comment ajouter un gestionnaire d'événements Unload. Ainsi, chaque fois que j'appelle mainModuleLoader.unload(), le gestionnaire d'événement unload est déclenché depuis le module.mxml. J'ai essayé ce qui suit sans succès.

<mx:Module creatingComplete="init()" unload="unloadHandler()"/> 
<mx:Module creatingComplete="init()" remove="unloadHandler()"/> 

Le problème avec la deuxième déclaration est au-dessus qu'il déclenche l'unLoadHandler même si certains enfant est retiré à l'intérieur du module. J'ai également essayé d'ajouter ce qui suit dans le script d'action.

private function init() 
{ 
    this.addEventListener(ModuleEvent.UNLOAD, unloadHandler); 
} 

Mais, il ne se déclenche pas lors du déchargement du module. Veuillez me faire savoir si je me trompe quelque part ou s'il y a une autre méthode pour attacher les gestionnaires d'événements. Merci!

Répondre

1

Vous êtes en partie là avec le supprimer ... il suffit de cocher la event.target est le module avant de faire votre travail, il J'ignorerai les autres alors.

+0

Merci Gregor !! Celui-ci résout mon problème. :) dans le gestionnaire de suppression, j'utilise simplement if (! (evt.target is myModule)) return; – Goje87

0

Je pense que vous devez gérer l'événement unload de votre mainModuleLoader:

<mx:ModuleLoader id="mainModuleLoader" unload="unloadHandler()"/> 
+0

Hey Splash, je ne peux pas le faire car différents modules auront différentes fonctions de déchargement définies en interne. Certains modules peuvent également ne pas avoir de fonctions de déchargement. Donc, j'ai pensé qu'il est préférable que le module appelle ses propres gestionnaires de déchargement s'il en a un. – Goje87

+0

@ Goje87, je ne peux pas trouver que 'Module' a un événement' unload'. – splash