2010-12-15 5 views
0

J'ai un problème étrange:dispatchEvent ne fonctionne pas

I attribué la variable suivante:

public static const SERIES:String = "series"; 

Puis dans la même classe que j'ai la fonction suivante:

public function imgCompleteHandler(e:Event):void { 
      var slidesXML:XML = new XML(e.target.data); 
      for each (var serie:XML in slidesXML.slide){ 
       this.thumbs = serie.image; 
       series.push(serie); 
      } 
         trace("before");  
      dispatchEvent(new Event(SERIES)); 
         trace("after"); 
     } 

Cette est la classe où l'événement est appelé:

package be.devine3.groep6.view.components.overview 
{ 
    import be.devine3.groep6.model.AppModel; 
    import be.devine3.groep6.view.components.series.Series; 
    import flash.display.Loader; 
    import flash.display.Sprite; 
    import flash.events.Event; 

    public class SerieOverview extends Sprite 
    { 
     private var loader:Loader; 
     private var appModel:AppModel; 
     public function SerieOverview() 
     { 
      this.appModel = AppModel.getInstance(); 

      appModel.addEventListener(AppModel.SERIES, seriesLoadedHandler); 
     } 
     public function seriesLoadedHandler(e:Event):void{ 
      for each (var slideModel:XML in appModel.series) { 
       var serie:Series = new Series(slideModel); 
       addChild(serie); 
      } 
      } 


    } 
} 

Maintenant, pour une raison quelconque, l'événement n'est pas distribué, les traces que j'ai placées avant et après l'événement dispatch sont toutes les deux déclenchées. Quelqu'un sait pourquoi l'événement d'expédition ne fonctionne pas?

Répondre

0

C'est un peu difficile de trouver le problème par le code que vous avez posté. Vérification facile: assurez-vous que vous ajoutez l'eventlistener AVANT l'envoi de l'événement. Ajoutez une trace dans la méthode où vous ajoutez l'écouteur pour vous assurer qu'il est défini avant l'envoi.

0

Votre méthode AppModel getInstance() initialise elle aussi la classe AppModel? Si c'est le cas, l'événement est probablement distribué avant d'ajouter l'écouteur d'événement.

J'utilise toujours ce flux:

1) Créer une instance de la classe

2) Joindre l'événement initialisation auditeurs

3) Appelle une méthode d'initialisation publique() (c.-à-AppModel.instance() .init();)