1.Module:
实现:IModel
2. IModule
将类标记为模块的接口。
3.IFlexModuleFactory
实现:SystemManager(SystemManager 类管理应用程序窗口);SystemManager 是在应用程序中创建的第一个显示类。它负责创建要显示的 mx.preloaders.Preloader
以及应用程序完成加载时显示的mx.preloaders.SparkDownloadProgressBar
,然后创建 mx.core.Application
实例。
IFlexModuleFactory 接口提供引导 Flex 应用程序和动态加载的模块时应该使用的约定。
4.ModuleLoader
ModuleLoader 组件的行为方式与 SWFLoader 极为相似,不同的是它需要遵循与加载内容间的合同要求。本合同规定子级 SWF 文件实现 IFlexModuleFactory,并且可以按需使用实现的 factory 创建子类的多个实例。
5.ModuleManager
ModuleManager 类会集中管理动态加载模块。并会维持 URL 到模块的映射。模块可以处于已加载(并且可使用)状态,也可以处于尚未加载状态。ModuleManager 会分派显示模块状态的事件。客户可以注册事件处理函数,然后调用 load()
方法,该方法可在 factory 就绪时(或者,在已加载时可立即)分派事件。
Module和ModuleManger的区别:
ModuleLoader
Flex中的ModuleLoader组件为模块的载入提供和很方便的接口,它是高层的处理Module的API。
可以这种在flex中简单的使用module
<mx:ModuleLoader url="MXMLDemoModule.swf"/>
也可以在编程时动态的改变URL,来加载不同的Module。
ModuleLoader其实是一种特殊的导航式容器。和一般导航式容器如ViewStack不同的是,ModuleLoader不必在初始化时携带加载所有的孩子组件。
另外,推荐在moduleloader做切换的时候,加上:moduleLoader.unloadModule再做moduleLoader.loadModule()。Flex确保调用load()方法只有一个对象。
ModuleManager
ModuleManager类提供了低层次的处理Module的装载卸载以及事件响应等的变成接口。这种方式比起纯粹的ModuleLoader方式稍微复杂一点,但是ModuleManager提供了比ModuleLoader更加强大的能力来管理Module模块的加载过程。
具体操作可以分成以下几步:
1.通过ModuleManager实例的getModule()方法拿到Module模块的一个索引,索引类型为IModuleInfo。
2.调用这个索引的load()方法。
3.利用这个接口的factory属性拿到它相关连的Module工厂,调用此工厂的create()方法,并将返回值强制转换成当前的Module类型。
private var module:IModuleInfo;
module = ModuleManager.getModule("UserList.swf");
module.addEventListener(ModuleEvent.READY,on
module.load();
private function on
var me:ModuleEvent = event as ModuleEvent;
userList = me.module.factory.create() as UserList;
container.addChild(userList);
}
在调用create()方法的时候,可以先不加入显示列表,这样就可以先将module载入内存,需要的时候再加入显示列表。
加载过程的事件
这个倒不是ModuleManager特有的,ModuleLoader也有,就是setup,ready,unload,progress,error等事件。
Progress事件
protected function on
trace ("ModuleEvent.PROGRESS received: " + e.bytesLoaded + " of " + e.bytesTotal + " loaded.");
}
主要就是bytesLoaded和bytesTotal,分别表示已经加载的字节数和总共的字节数。