使用ModuleLoader载入模块

ModuleLoader 动态加载模块
本文介绍mx.modules.ModuleLoader类的功能与用法,该类用于动态加载和卸载SWF模块,支持IFlexModuleFactory接口,适用于Flex应用程序模块化管理。
mx.modules.ModuleLoader类是一个容器类,功能类似于mx.controls.SWFLoader 组件。它载入SWF并把模块添加到应用程序的显示列表。ModuleLoader和SWFLoader不同之处在于它有一个约定,这个被载入的SWF须实现IFlexModuleFactory。被编译的模块包含IFlexModuleFactory类工厂,它允许应用程序在运行期间动态载入模块化SWF而不需要在主应用程序中实现此接口。
虽然ModuleLoader对象是一个可视的容器,可载入继承自Module和ModuleBase的模块,不依赖于这个模块是否包含有框架代码或可视对象。ModuleLoader的url属性指向一个模块的具体位置。设置url属性后,组件内部会调用loadModule方法,开始下载模块。
下面的例子在应用程序同一个域中载入模块:
<mx:Application 
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical">

<mx:Panel title="Contacts:" width="350" height="180"
horizontalAlign="center" verticalAlign="middle">
<mx:ModuleLoader url="ContactList.swf" />
</mx:Panel>

</mx:Application>

当应用程序启动时,ModuleLoade去载入ContactList.swf 模块,载入完成后,它被添加到应用程序显示列表中。
ModuleLoader组件也允许你动态卸载和加载模块。对ModuleLoader的url属性的设置在内部会调用loadModule方法,添加这个模块作为子节点。调用unloadModule方法可删除显示列表中的模块。调用unloadModule是设置module引用为null,但是并不会改变url属性值。
下面的例子中演示模块的加载和卸载:
Code View:
<mx:Application 
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical">

<mx:Script>
<![CDATA[

private function displayModule( moduleUrl:String ):void
{
var url:String = moduleLoader.url;
if( url == moduleUrl ) return;
if( url != null ) moduleLoader.unloadModule();
moduleLoader.url = moduleUrl;
}

private function showHandler():void
{
displayModule( "ContactList.swf" );
}
private function enterHandler():void
{
displayModule( "ContactEntry.swf" );
}

]]>
</mx:Script>

<mx:Panel title="Contacts:" width="350" height="210"
horizontalAlign="center" verticalAlign="middle">
<mx:ModuleLoader id="moduleLoader" height="110" />
<mx:HRule width="100%" />
<mx:HBox width="100%">
<mx:Button label="show list" click="showHandler();" />
<mx:Button label="enter contact" click="enterHandler();" />
</mx:HBox>
</mx:Panel>

</mx:Application>


Button控件的Click事件处理器更新相应模块。这个应用程序通过加载ContactList.swf模块和ContactEntry.swf模块交替显示联系人信息列表和用户信息输入表单。
当模块加载到应用程序中后,它会被添加到mx.modules.ModuleManager对象的模块列表中。当删除时,引用会被设置为null以释放内存和资源。对于加载和卸载基于Flex的应用程序模块来说使用ModuleLoader是一种很方便的方法。

http://ccap168.cn/news/20093713465.htm
http://ccap168.cn/news/200937134347.htm
http://livedocs.adobe.com/flex/3/html/help.html?content=modular_5.html
http://www.code-design.cn/article/20100426/2232.aspx
http://bbs.airia.cn/thread-13661-1-1.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值