Bonjour,

je viens vous demander conseil car j'obtiens un résultat quelque peu surprenant avec le dispatch d'un event.

J'ai un fichier mxml qui contient une fonction d'init :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
private function init() : void {
  model.addEventListener(GraphInitializedEvent.EVENT_ID, initData);
  model.initGraph(xmldata);
}
Et la fonction initData :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
private function initData(evt : Event):void {
  trace("graph");
}
Enfin, la fonction d'init du graphe qui dispatch l'event :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
public function initGraph(xmldata : XML) : void  {
  trace("init");
  dispatchEvent(new GraphInitializedEvent());
  trace("init2");
}
Lorsque j'exécute ce code là, j'obtiens bien le fonctionnement désiré, avec sur la sortie de la console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
init1
graph
init2
La ou cela se complique, c'est que plutot que d'appeler la méthode initData dès le chargement de l'application, je le fais après un appel à un httpservice, je récupère le xml et ensuite j'appelle initData.

Cela donne donc pour la première méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
private function init() : void {
  model.addEventListener(GraphInitializedEvent.EVENT_ID, initData);
  //model.initGraph(xmldata);
}
Méthode appelée après réception du XML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
public function result (data : Object): void {
  initGraph(data as XML);
}
initGraph et initData sont inchangées.

Maintenant voilà ce que j'obtiens sur la sortie de la console :
Je ne comprends pas pourquoi le fait d'appeler la fonction initgraph après une requête empeche l'évènement de se propager alors qu'en l'appelant directement, ca marche sans problème.

Si quelqu'un pouvait m'éclairer, je lui en serait très reconnaissant. Merci.