- 浏览: 850368 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
Modules技术
flex的Modules技术是可以被flex程序使用的一个swf文件,它不能脱离程序独立运行,但是多个程序之间可以共享它。flex的
Modules技术将应用程序分割成小块、模块,主程序动态的加载所需要的模块。主程序在启动时并不全部加载所有的模块。当用户和模块没有交互的时候它不
需要加载模块,同时它在模块不需要的时候可以卸载模块并释放内存和资源。Module和RSLs(运行时共享库)很相似,他们独立分离代码将应用程序分成
独立的加载的swf文件。但它比RSLs更加灵活,因为它可以在运行时动态加载/卸载并且不依赖于应用程序编译。
Module是一个特殊的可以动态加载的包含IFlexModuleFactory类工厂的swf文件。它允许应用程序在运行时加载代码并在不需要主程序
相关连类实现的情况下创建类的实例。Module组件是继承于LayoutContainer,其实是一个flex容器,如果您的模块不包含任何flex
框架代码,则可以创建扩展 ModuleBase 类的类。与创建基于 Module 类的模块相比,如果您使用 ModuleBase
类,则通常情况下您的模块要小一些,因为它没有任何flex框架类依赖项。
ModuleManager 负责管理加载了的modules集合,将之对待为按照module
URL为索引的单例map。加载module会触发一系列的事件来让客户端监控module的状态。module只加载一次,但是会重载并分发事件,因此
客户端代码可以简单的依赖 READY 事件来获取module的类工厂来使用它。
ModuleLoader 组件的行为方式与 SWFLoader
极为相似,不同的是它需要遵循与加载内容间的合同要求。本合同规定子级 SWF 文件实现
IFlexModuleFactory,并且可以按需使用实现的 factory 创建子类的多个实例。
Modules的优点:
让swf文件初始下载尺寸更小
让加载时间更短
对应用程序更好的封装性。
让swf文件初始下载尺寸更小
让加载时间更短
对应用程序更好的封装性。
应用Module步骤:
1 创建任意数量的modules。基于MXML文件的根节点是<mx:Module>。基于AS的扩展Module或者ModuleBase类。
2 编译module,方式如同应用程序的编译。可以使用基于命令行的mxmlc或者集成于flexbuilder中的编译器。
3 创建一个应用程序类。
4 在应用程序文件中使用<mx:ModuleLoader>来加载modules。或者你也可以使用mx.modules.ModuleLoader和mx.modules.ModuleManager类的方法来加载。
Module的加载
方法1:
<mx:ModuleLoader url="ModuleA.swf"/>
方法2:
public var info:IModuleInfo;
private function initApp():void {
info = ModuleManager.getModule("ModuleA.swf");
info.addEventListener(ModuleEvent.READY, modEventHandler);
info.load();
}
private function modEventHandler(e:ModuleEvent):void
var moduleA:ModuleA = info.factory.create() as ModuleA;
}
默 认下,一个module会被加载进当前应用程序domain的子domain。你可以通过使用ModuleLoader的 applicationDomain的属性来指定不同的应用程序domain。 因为module被加载到子domain中,因此它拥有的类将不属于主应用程序的domain中。举例:当一个module加载了 PopUpManager类,那么在整个应用程序中它就变成了PopUpManager类的Owner,因为它注册到SingletonManager 中。加入另外一个module晚些试图使用PopUpManager,
<mx:ModuleLoader url="ModuleA.swf"/>
方法2:
public var info:IModuleInfo;
private function initApp():void {
info = ModuleManager.getModule("ModuleA.swf");
info.addEventListener(ModuleEvent.READY, modEventHandler);
info.load();
}
private function modEventHandler(e:ModuleEvent):void
var moduleA:ModuleA = info.factory.create() as ModuleA;
}
默 认下,一个module会被加载进当前应用程序domain的子domain。你可以通过使用ModuleLoader的 applicationDomain的属性来指定不同的应用程序domain。 因为module被加载到子domain中,因此它拥有的类将不属于主应用程序的domain中。举例:当一个module加载了 PopUpManager类,那么在整个应用程序中它就变成了PopUpManager类的Owner,因为它注册到SingletonManager 中。加入另外一个module晚些试图使用PopUpManager,
Adobe ® Flash® Player
将会抛错。解决方法是确保如PopUpManager、DragManager这些managers和一些共享服务都定义在主应用程序中(或者晚加载入应
用程序domain中)。这样这些类可以被所有的module使用。典型的,都是通过将他们添加到脚本块中: import
mx.managers.PopUpManager; private var popUpManager:PopUpManager;
这项技术同时也应用到components,当module第一次使用component时,将在它自己的domain中拥有这
component的类定义。作为结果,如果别的module试图使用这些已经被另一个module使用的component,它的定义将会不能匹配到现
存的定义中。因此,为了避免component的定义不匹配,在主应用程序中创建component的实例,让所有的module去引用。
当你第一次开启应用程序来使用module,此应用程序将会比不使用module的应用程序尺寸更小。同时它也会减小等待时
间。但同时,它将会在你访问以前非module的地方增加延迟。这是因为它不是预加载的。他们在第一次请求的时候被加载。
当module第一次被加载时,module的swf文件通过网络传输并储存到浏览器的缓存中。当它被卸载后又被加载时,等待时间会稍短,这是因为
Flash Player将在客户端浏览器缓存中加它,而非网络。
Module的swf文件和其他所有的swf文件一样,存在于客户端缓存一直到用户清空他们。因此module可以被主应用程序跨不同的session访
问,减少加载时间,但着也依赖于浏览器的缓存清空频率。你可以预加载
module到内存即使当它目前并没有被用到的时候。使用IModuleInfo类的load方法在应用程序启动时可以预加载module。它将module加载到内存,但是并没有创建其实例。
Module的安全
因为module必须和应用程序再同一个security domain中,当你在AIR应用程序中使用任何的module
SWF文件时,必须和主应用在相同的目录或者在其子目录中,确保他们在相同的security沙盒中。一个确保的方法是使用URL引用module位置不
要包含“../”。在不同的服务器中加载module在不同的服务器中加载module,必须在其彼此间建立信任。跨域访问应用程序加载应用程序时必须调
用allowDomain()方法并且指定你需要加载的module所在的目标domain。因此在应用程序预初始话事件处理时指定目标域来确保程序在
module加载前启动。在module所在的远程服务的cross-domain文件,增加一个entry来指定加载应用程序的服务位置。在你自己加载
的应用程序中preinitialize事件处理器中加载远程cross-domain文件。在被加载的module调用allowDomain方法来和
调用者通讯。
Module 通信
1. 通过查询字串方式传入
1. 通过查询字串方式传入
var url:String
= "QueryStringModule.swf?firstName=" + "张三";
loadModule(url);
在模块中可以从loderInfo中得到传入的参数:var s:String = this.loaderInfo.url.toString();
loadModule(url);
在模块中可以从loderInfo中得到传入的参数:var s:String = this.loaderInfo.url.toString();
2. Application和Module相互访问:
在application中可以通过 ModuleLoader的child属性得到Module实例,然后访问Module的公开方法和属性,当然也可用ModuleManager.getModule()方法。
如果是在Module中要访问Application中方法和属性(可以是私有的),用parentApplication属性
3 . module和module之间
其实是通过Application
来传递,在module中的parent是ModuleLoader,而ModuleLoader的parent就是Application了,可以在
moduleA中引用Application派发一个事件,在moduleB中引用 Application来接收事件就能传递参数了。
也可以借助parentApplication来引用别的module, 如:在ModuleB中要访问ModuleA,
var modelA: ModuleA = parentApplication.m1.child as ModuleA;
4. 通过用接口方式,即让Module实现自定义的interface。
评论
3 楼
mysecond
2011-11-19
谢谢,讲的很详细,好好看看

2 楼
csdn_zuoqiang
2010-10-14
1. application 通过 url 字串方式传入
var s:String = "QueryStringModule.swf?firstName=" + ti1.text + "&lastName=" + ti2.text;
在 module 中:
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="parseString()">
....
public function parseString():void {
try {
// Remove everything before the question mark, including
// the question mark.
var myPattern:RegExp = /.*\?/;
var s:String = this.loaderInfo.url.toString();
....
2. 通过定义事件类来传递参数
3. 通过 parentApplication 两个共生模块间进行通信
共生模块是指在一个 application 中同时加载两个模块
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="module.*">
<mx:Script>
<![CDATA[
]]>
</mx:Script>
<ns1:InterModule2 height="122" id="m2">
</ns1:InterModule2>
<ns1:InterModule1 id="m1" borderColor="#1492EA" cornerRadius="5">
</ns1:InterModule1>
</mx:Application>
在 m1 中定义方法 getNewTitle()
则 m2 可以调用 parentApplication.m1.getNewTitle();
4. 主模块向不同模块传入参数
通过 event 实现主模块与子模块, 子模块间参数传递, 参考这篇文章
各模块实现一个接口, 主模块调用模块接口的方法来传递参数
var s:String = "QueryStringModule.swf?firstName=" + ti1.text + "&lastName=" + ti2.text;
在 module 中:
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="parseString()">
....
public function parseString():void {
try {
// Remove everything before the question mark, including
// the question mark.
var myPattern:RegExp = /.*\?/;
var s:String = this.loaderInfo.url.toString();
....
2. 通过定义事件类来传递参数
3. 通过 parentApplication 两个共生模块间进行通信
共生模块是指在一个 application 中同时加载两个模块
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="module.*">
<mx:Script>
<![CDATA[
]]>
</mx:Script>
<ns1:InterModule2 height="122" id="m2">
</ns1:InterModule2>
<ns1:InterModule1 id="m1" borderColor="#1492EA" cornerRadius="5">
</ns1:InterModule1>
</mx:Application>
在 m1 中定义方法 getNewTitle()
则 m2 可以调用 parentApplication.m1.getNewTitle();
4. 主模块向不同模块传入参数
通过 event 实现主模块与子模块, 子模块间参数传递, 参考这篇文章
各模块实现一个接口, 主模块调用模块接口的方法来传递参数
发表评论
-
Flex Spark皮肤定制
2011-08-03 23:18 1043转自 http://www.cnblogs.com/twave ... -
自定义ItemRenderer常遇到的警告unable to bind to property的解决办法
2011-08-03 22:02 1286<?xml version="1.0&q ... -
Flash Builder 代码格式化工具 Flex Formatter 下载地址
2011-08-03 17:09 1326http://sourceforge.net/projects ... -
提高Flex程序性能的10个秘诀
2011-07-29 09:20 888规则 # 1: 打扫代码 一般来说,保持代码清洁是一 ... -
Flex性能优化常用手法总结
2011-07-29 09:19 876随着Flex越来越多的被人们所熟知,越来越多的互联网也开始了R ... -
关于Flex4,textArea控件的htmlText属性被和谐。。。
2011-06-15 11:18 4885最近做的项目是网页游戏的聊天系统和好友系统,以前喜欢用fl ... -
修改flash builder注释里的@author
2011-06-15 00:18 2134在flash builder里,按Ctrl+Shift+D ... -
AS3中String转换成Boolean
2011-05-27 12:07 3542AS3中String转换成Boolean的规则和Java不一样 ... -
用 File.applicationDerectoryPath.resolv("text.txt")会报SecuriyError错误!
2011-05-26 16:26 1074用 File.applicationDerectoryPath ... -
关于actionscript3.0 中 ResourceBundle 绑定国际化资源文件
2011-04-02 20:17 1358一个简单的示例项目:mpcs LangUtil.a ... -
AIR2.0新特性
2011-03-24 10:29 1285按照类型用默认的程序打开文件 在AIR2.0中,你可以使 ... -
FlashSocket通信安全策略一点心得
2011-03-06 10:29 14321、问题描述 将flash发布为html格式 ... -
理解Loader、Bitmap和BitmapData对象之间的关系
2011-02-15 18:58 4156在Loader对象实例中,被 ... -
AS3 dynamic class
2011-02-13 14:58 3030动态类 “动态”类定义在运行时可通过添加/ 更改属性和方法来 ... -
Array的SortOn排序
2011-01-29 19:53 4102sortOn () 方法 AS3 func ... -
通过Http post方式发送json,然后获取返回的json
2011-01-24 20:36 14230思路:将发送的json转换为xml 示例代码 ... -
在JPanel中,如何将.png格式的图片设置为背景?
2011-01-18 20:14 1770yourJPanel.setBackgroundDecorat ... -
Flash中所支持的Html标签
2011-01-18 19:23 976Flash中所支持的Html标签 <a& ... -
AsWing JList
2011-01-18 14:24 2554JList类似于flex的dataGroup控件,可以自己定义 ... -
AS3.0的Socket通讯发送固定字符串(指定编码)
2011-01-12 17:08 1830flash客户端与服务端传输中文出现乱码的问题C++服务端每次 ...
相关推荐
FlexModule_j2ee 是一个专为整合Flex与JSP应用设计的组件库,它提供了一个.jar文件,使得在Java服务器端(JSP)与客户端的Adobe Flex之间建立交互变得更加便捷。Flex是一种强大的富互联网应用程序(RIA)开发技术,...
FlexModule_j2ee.zip是一个压缩包,包含了将Flex前端技术集成到JSP(JavaServer Pages)和J2EE(Java 2 Platform, Enterprise Edition)后端环境中的示例工程。这个项目旨在展示如何在传统的Web应用中嵌入富互联网...
不要以为我要5分很高,这个绝对是官网资源,其中包含各位最一直在寻找却找不到即使找到也不好用的 flex-bootstrap-jsp.jar flex-bootstrap.jar flex-webtier-jsp.jar flex-webtier.jar
首先,了解Flex模块(Module)。在Flex中,一个模块是一个可以独立编译和加载的SWF文件,它可以在运行时动态插入到主应用程序中。模块化设计使开发者能够将应用拆分为更小、更专注的功能单元,每个单元都可以单独...
the Flex 3 compiler module for J2EE application servers.
【Flex Module PPT详解】 Flex Module 是Adobe Flex SDK中的一个重要特性,它允许开发者将大型应用程序分解为更小、更易管理的部分。通过模块化,我们可以创建独立的代码块,这些代码块可以在不同的应用程序中复用...
标签“Flex Module j2ee”强调了Flex模块在Java企业版(J2EE)环境中的使用。Flex模块在J2EE应用服务器上运行,可以利用后端服务,如数据库、Web服务等,为用户提供丰富的图形用户界面。在J2EE环境中,Flex模块通常...
Flex模块(Flex Module)是Adobe Flex框架中的一个重要概念,它允许开发者将大型应用程序分解为多个独立的、可重用的组件,这些组件被称为模块。在Flex应用中,模块可以按需加载,从而优化应用程序的启动时间和内存...
Flex 基于 Module 模块的开发是一种有效的软件架构策略,它允许将大型应用程序分解为更小、更易于管理的单元,称为模块。模块化的主要目标是提高代码的可维护性、可扩展性和性能。 1. **模块化的定义与原理** - **...
the Flex 3 compiler module for J2EE application servers.
在Flex工程中添加Module的方法是:在FlashBuilder中右键工程目录->Porperties->Flex Modules, 然后就可以add/edit/remove需要的module了, 但问题 是无论添加多少module都要点击add按钮一个一个添加! 像我们的项目一...
开发者在个人文件中偶然发现了FlexModule_j2ee.zip,这是一个关键的资源包,包含了将Flex嵌入到JSP中的必要组件和文档。通过解压并阅读其中的readme.txt文件,开发者获取了初步的指导思路,了解到该模块能够简化Flex...
这将卸载Module,释放其占用的资源,但请注意,这并不意味着Module的类将从内存中完全移除,因为Flex可能会缓存已加载的Module以提高性能。 3. **示例代码**: 在`main.mxml`中,可能包含一个按钮,点击后加载或...
在Flex3的Module模块程序设计中,在Google中进行了大量的资料查找,综合比较各个资源后,将我认为最有价值的资料放在这里(全英文的)。 下载包中包括: 1、Adobe Creating Mudule Application.pdf 2、相似例子的源...
注意,`FlexModule_j2ee.zip`实际上是一个war文件,需要重命名为zip并再次解压,以便获取其内部内容。 2. 将解压后的`flex`文件夹复制到你的Java Web工程的`WEB-INF`目录下,同时将`lib`目录中的`flex-bootstrap....