Flex模块化(module)学习总结
1:为什么要模块化;
模块化提供了分离应用程序代码到不同的swf文件上以便减少下载时间和文件大小。使用Modules的好处是:
1. 主应用程序开始时不需马上下载modules。应用程序会根据需求载入和卸载modules。
2. 由于每个modules独立于其他应用程序modules,当需要改变一个modules时,你只需要重编译这个modules而不是整个应用程序。
模块化可创建模块化应用程序是提高Flex框架性能的重要方面,提供更多能力控制下载时间和文件大小,使用modules,你可以根据哪些可被独立载入,哪些可被其他程序使用而分离应用程序代码,
2:如何模块化;
2.1创建模块
基于mxml的模块,在你的工程右键->new->mxml Module
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300">
</mx:Module>
基于as的模块
package
{
import mx.modules.Module;
publicclass General extends Module
{
publicfunction General()
{
super();
}
}
}
2.2加载模块
2.2.1使用ModuleLoader加载;
<mx:ModuleLoader url="ContactList.swf" />
2.2.2使用ModuleManager加载
Private functioncreationHandler():void
{
_moduleInfo =
ModuleManager.getModule( 'ContactList.swf'
);
_moduleInfo.addEventListener( ModuleEvent.READY,
moduleLoadHandler );
_moduleInfo.load();
}
Private functionmoduleLoadHandler(evt:ModuleEvent):void
{
canvas.addChild( _moduleInfo.factory.create() as
DisplayObject );
}
2.2.3创建弹出模块
Var general:ModuleLoader
general=ModuleLoader(mx.managers.PopUpManager.createPopUp(this,ModuleLoader));
general.url="General.swf";
注意:在创建弹出模块时,有时会产生:无法将 mx.managers::PopUpManagerImpl@bba9941 转换为 mx.managers.IPopUpManager 这种错误,这个时候我们需要在主程序里引入
import mx.managers.IPopUpManager;
private var ipopUp:IPopUpManager
2.3模块通信
模块与模块之间的通信一般不建议采用主程序直接去调用模块里的方法或者属性, 建议采用事件的方式进行通信,建立一个全局事件类,进行发送和帧听,如何实现在此不进行讨论,但是如果有些特殊的需求需要直接调用模块里的方法或者属性有以下三种方式:
l ModuleLoader加载方式的通信
<mx:ModuleLoaderid="ml" url="General.swf" ready="ReadyHandler(event)"/>
privatefunction ReadyHandler(evt:ModuleEvent):void
{
general=ModuleLoader(evt.target).child as General;
general.callMe("大喊将军");
}
l ModuleManager加载方式通信
private var_moduleInfo:IModuleInfo;
private functioncreationHandler():void
{
_moduleInfo = ModuleManager.getModule( 'General.swf');
_moduleInfo.addEventListener( ModuleEvent.READY,
moduleLoadHandler );
_moduleInfo.load();
}
Private function moduleLoadHandler( evt:ModuleEvent ):void
{
var myModule:MyModule = _moduleInfo.factory.create() asMyModule;
myModule.callMe("大喊将军");
}
l 使用模块接口实现通信
不管是ModuleLoader方式通信还是ModuleManager方式通信都需要在主程序里引入module的类,当你改变了模块之后,你同样要更新你的主程序和模块,这样模块化的思想就没有体现出来;但是有些时候需要调用模块里的方法,这时候你就需要用到模块接口;让各个模块都是继承一个接口,这个接口里有二个方法,一个是调用你模块里的方法,一个是设置你模块里的属性;
接口IModule如下:
package com.oz.general.module
{
import flash.events.IEventDispatcher;
publicinterface IModule extends IEventDispatcher
{
function callFunction(name:String,...arg):void;
function setProperty(name:String,value:*):void;
}
}
callFunction(name:String,…arg):void
name:你所要调用模块里的方法名;
…arg:方法参数;
setProperty(name:String,value:*):void
name:你所要设置的模块里的属性;
value:你所要设置的值;
创建一个继承IModule的模块GeneralModule.mxml如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" implements="com.oz.general.module.IModule">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
privatevar myName:String="大喊将军";
privatefunction getMyInformation():void
{
Alert.show("name:"+this.myName+"\nQQ:260020002\nQQ群:61272221","my information:");
}
publicfunction callFunction(name:String,...arg):void
{
switch(name)
{
case"getMyInformation":this.getMyInformation();
break;
}
}
publicfunction setProperty(name:String,value:*):void
{
switch(name)
{
case"myName":this.myName=value;
break;
}
}
]]>
</mx:Script>
</mx:Module>
主程序如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import com.oz.general.module.IModule;
import mx.events.ModuleEvent;
privatevar imodule:IModule
privatefunction moduleReadyHandler(evt:ModuleEvent):void
{
imodule=ModuleLoader(evt.target).child as IModule;
imodule.callFunction("getMyInformation");
}
privatefunction sendClick():void
{
imodule.setProperty("myName",ti.text);
imodule.callFunction("getMyInformation");
}
]]>
</mx:Script>
<mx:Style source="com/oz/general/style/style.css">
</mx:Style>
<mx:ModuleLoader url="com/oz/general/module/GeneralModule.swf" id="generalModule" x="100" y="100" ready="moduleReadyHandler(event)">
</mx:ModuleLoader>
<mx:Label x="178" y="100" text="修改模块里的属性(myName):" fontSize="12"/>
<mx:TextInput id="ti" x="356" y="100"/>
<mx:Button x="524" y="100" label="提交" fontSize="12" click="sendClick()"/>
</mx:Application>
相关推荐
Flex 基于 Module 模块的...在实际开发中,运用 Flex 的模块化开发方式,可以构建复杂且可扩展的用户界面,同时优化应用程序的性能和维护性。通过合理地组织模块,可以确保代码结构清晰,便于团队协作和项目长期维护。
2. **Flex模块化机制**:在Flex中,模块(Module)是可以通过`mx:Module`标签定义的独立的SWF文件。它们在运行时按需加载,有助于减少初始加载时间,并且可以动态地添加或移除模块。使用模块可以优化性能,因为不是...
首先,了解Flex模块(Module)。在Flex中,一个模块是一个可以独立编译和加载的SWF文件,它可以在运行时动态插入到主应用程序中。模块化设计使开发者能够将应用拆分为更小、更专注的功能单元,每个单元都可以单独...
Flex模块化开发是一种高效构建大型复杂应用的策略,它允许我们将应用程序分解为多个独立的、可重用的组件或模块,以提高代码的可维护性和可扩展性。在这个实例中,我们将深入探讨Flex模块化开发的关键概念和技术。 ...
### Flex 模块化应用程序开发 模块化设计在软件工程领域有着重要的意义,尤其是在像Flex这样的框架中。Flex是一款由Adobe公司开发的开源框架,用于构建高性能、具有丰富交互性的Web应用程序。通过采用模块化的开发...
Flex模块化主要通过Flex Module Framework(模块框架)实现,这是一个内置于Flex SDK中的组件,支持在运行时动态加载和卸载模块。这种动态加载能力使得Flex应用程序能够根据用户需求或网络状况来决定加载哪些模块,...
模块(Module)是Flex应用程序的一个重要组成部分,它允许我们将大项目分解为更小、更易于管理的部分。动态加载和卸载Module是优化应用程序性能和减少初始化时间的有效方法,特别是在需要根据用户需求按需加载功能的...
在Flex4中实现模块化,可以通过MXMLC编译器的--module选项或FlashBuilder的模块化项目设置来完成。这样可以降低代码复杂性,提高可维护性和扩展性。 FluorineFx在其中起到关键作用,它提供了AMF通道,使得Flex...
1. **Flex模块(Module)**:在Flex应用中,模块是可重用的、可动态加载的SWF组件。它们是独立的代码单元,可以在运行时被添加到主应用程序中。模块化开发可以显著减少初始加载的代码量,特别是对于大型复杂项目,能...
通过模块化,我们可以创建独立的代码块,这些代码块可以在不同的应用程序中复用,提高开发效率并优化应用程序性能。 **什么是Flex Module?** Flex Module 是一种技术,它允许开发者将应用划分为多个模块,每个...
在Flex开发中,`ModuleLoader` 是一个关键组件,它允许开发者动态地加载MX模块(即Flex模块,独立的SWF文件)。`ModuleLoader` 的主要功能是将模块的加载过程与应用程序的其余部分分离,这有助于实现代码的模块化和...
Flex Module专题是一个关于软件开发的讨论,主要集中在使用Flex模块化技术进行应用程序设计和构建上。Flex是一个基于ActionScript和Flash Player的开放源码框架,主要用于创建富互联网应用程序(RIA)。这个专题可能...
在Flex中,模块(Module)是一种可重用的组件,可以被加载到主应用程序(Application)中,以实现代码的模块化和复用。 在Flex中,模块间的通信主要通过以下几种方式实现: 1. **事件监听**:模块可以通过发布...
在Flex开发中,模块化(Module)是一种优化大型应用程序架构的有效方法。它允许我们将复杂的项目分解为多个独立的、可重用的组件,每个组件都称为一个模块。这样做可以提高代码的可维护性和可扩展性,同时降低加载...
避免Flex RSL重复加载的一个方法是利用SWC进行模块化开发。将经常使用的组件或服务打包成独立的SWC文件,然后在需要它们的项目中引入。这样,每个模块只需加载自身所需的SWC,而不是整个RSL库。例如,如果一个模块只...
10. **Flex模块化**:通过模块(Module)机制,开发者可以将大型应用拆分为多个小的、可独立加载的单元,以优化加载时间和资源管理。 11. **移动开发支持**:Flex 4.5版本开始,增加了对移动设备的支持,能够创建...
模块化(Module)是Flex3中实现客户端缓存的一个重要方式。模块允许我们将大型应用分解为较小、独立的单元,每个单元都可以单独加载和卸载。通过这种方式,我们可以只加载用户需要的特定模块,而不是一次性加载整个...
7. 模块化开发:Flex 4.0引入了模块(Module)的概念,允许将大型应用拆分为多个独立加载的模块,从而优化加载时间和内存使用。 8. 集成开发环境(IDE):Flex Builder或Flash Builder(Flex的开发工具)在Flex 4.0...
7. 模块化开发:使用Flex模块(Module)可以提高代码复用性和项目组织,但需注意模块间的通信和加载策略。 总之,学习Flex过程中,遇到问题要深入理解其原理,结合实际场景灵活运用,同时关注官方文档和社区资源,...