2010-12-15 68 views
0

我有一个奇怪的问题:dispatchevent不工作

我分配了以下变量:

public static const SERIES:String = "series"; 

然后在同一个班,我有以下功能:

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

这是事件被称为的类:

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


    } 
} 

由于某种原因,事件没有得到调度,我在调度事件之前和之后放置的跟踪都被触发。任何人都知道调度事件不起作用的原因?

回答

0

它的一种很难通过您发布的tje代码发现问题。简单的检查:确保在事件发送之前添加eventlistener。在添加侦听器的方法中添加一个跟踪,以确保在派发之前设置它。

0

您的AppModel getInstance()方法是否也初始化AppModel类?如果是这样,在添加事件侦听器之前可能会分派事件。

我始终使用此流量:

1)创建类的实例

2)安装初始化事件侦听

3)呼叫一个公共init()方法(即AppModel.instance() .init();)