Flex Sample View的启动过程

AppEvent是自定义事件,EventBus单件模式了一个AppEvent对象,而SiteContainer又代理模式了EventBus的对象和所有方法,定义使用事件dispatchEvent

public static function dispatchEvent(event:Event):Boolean
      {
       var eventBase:EventBus = EventBus.getInstance();
          return eventBase.dispatchEvent(event);
      } 

 

下面都是定义在SiteContainer中的类,   调用的顺序如下。其中AS类的构造函数最先被调用,然后是自定义组件的creationComplete  ="init()"执行,最后执行SiteContainer的init函数,发出SiteContainer.dispatch(SiteContainer.CONTAINER_INITIALIZED);广播事件CONTAINER_INITIALIZED,

public var configManager:ConfigManager;     AS类  1
   
   public var uiManager:UIManager;  AS类    2
   
   public var controller:Controller;  自定义组件  4
   
   public var mapManager:MapManager;  自定义组件  5
   
   public var widgetManager:WidgetManagerDocked;  自定义组件  6
   
   public var dataManager:DataManager;  AS类    3
   
   private static var _container:SiteContainer;  自定义组件  7

 

各个AS类和自定义组件中都添加了事件,如下:通过SiteContainer统一添加,又通过SiteContainer.dispatch(SiteContainer.CONTAINER_INITIALIZED);统一的触发。

SiteContainer.addEventListener(AppEvent.CONFIG_LOADED, config);
SiteContainer.addEventListener(AppEvent.SET_MAP_NAVIGATION, changeNavigationbyMenu);
SiteContainer.addEventListener(AppEvent.BASEMAP_MENU_CLICKED, basemapMenuClicked);

执行的顺序

SiteContainer.dispatch(SiteContainer.CONTAINER_INITIALIZED);  SiteContainer自定义组件中

SiteContainer.dispatchEvent(new AppEvent(AppEvent.CONFIG_LOADED, false, false, configData));    ConfigManager类中,然后的CONFIG_LOADED事件在各个类和自定义组件中都有定义

SiteContainer.dispatchEvent(new AppEvent(AppEvent.MAP_LOADED, false, false, map));      MapManager自定义组件中,这个也有多个类和自定义组件定义

SiteContainer.dispatchEvent(new AppEvent(AppEvent.SET_STATUS, false, false, defaultstatus));  在MapManager自定义组件中

SiteContainer.dispatchEvent(new AppEvent(AppEvent.LAYER_LOADED, false, false, null));     也在MapManager自定义组件中

………………

剩下的事件就不说了,只要在Search-Reference中搜索整个工程找到dispatchEvent就知道了

 

 

 

 

 

 

 

posted @ 2010-05-25 11:35  gaofei_work  阅读(494)  评论(0编辑  收藏  举报