Flex中的模块 ModuleLoader 、ModuleManager

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,onModuleReadyUseModuleManager);

module.load();

private function onModuleReadyUseModuleManager(event:Event):void{

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 onModuleProgress (e:ModuleEvent) : void {
trace ("ModuleEvent.PROGRESS received: " + e.bytesLoaded + " of " + e.bytesTotal + " loaded.");
}
主要就是bytesLoaded和bytesTotal,分别表示已经加载的字节数和总共的字节数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值