- 浏览: 1087342 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://developer.51cto.com/art/201008/215642.htm
本文和大家重点讨论一下Flex模块化应用程序开发,模块(Module)是创建大型Flex应用程序的一个解决方案,相信本文的介绍一定会让你有所收获。 Flex模块化应用程序开发 如果你没有看过RogerGonzalez的Blog中关于模块(Module)的文章,那么你应该去那里了解一下Flex2这个特性背后的细节和想法。这里我不想过多地探讨为什么要这样,而是想要给大家展示一个使用了模块(Module)的简单的Flex程序,你可以从中获得启示。 模块(Modules) 模块(Module)是创建大型Flex应用程序的一个解决方案,它允许你将你的用户接口分割成许多分散的有各自用途的小块。例如(下面出自Flex2的文档),一个保险公司可能有数百个表单——针对于各个领域的,针对各种请求类型,以及针对各种应用等等。创建一个包含所有这些表单的Flex应用程序将会产生一个巨大SWF文件,还会有不少问题: ?应用程序越大开发过程越复杂; 我的示例程序基于Flex2文档中的一个程序,但是我将它做了一些更改来说明几个常见的问题。这个例子展示了一个主程序和其它三个共享公有数据的模块(Module)。 其中一个设计要素是一个接口的使用,这个接口实质上是接口实现者和使用者之间的一个契约。这个例子将会说明我所说的意思。模块(Module)的接口部分虽然不是必须的但是却可以大大简化以后的开发和维护。比如,如果开发人员有一个小组负责报告部分,另一个小组负责图表部分,如果它们一开始用了接口,那么只要有需要,接口的实现就可以做足够多的变形而不会影响到工程结果。接口在模块(Module)中还扮演另外一个角色,我在下文中将会揭示这点。 模块(Module)是以<mx:Module>代替<mx:Application>作为根标签的MXML文件(或ActionScript文件)。你可以将带有<mx:Module>标签的作为一个程序来看,但是它不能运行。 这个示例有一个主程序文件以及带有一个接口的两个模块。打开主程序文件你会看到: 程序代码 第一个Panel包含了控制示例中模块(Module)加载和卸载的RadioButtons。第二个Panel是使用<mx:ModuleLoader>标签加载模块(Module)的地方。注意那个id为currentModule的ModuleLoader,它有一个关于ready事件的事件处理器。当Flex模块化中模块SWF文件加载了足够多可以开始使用的时候,ModuleLoader就会分派ready事件(或者说ModuleEvent.READY)。 这里有一个readyModule函数,它在<mx:Script>块中: 注意ModuleLoader的child属性是如何转换为IExpenseReport类的。IExpenseReport是一个所有模块(Module)都实现了的接口。只要每个模块都实现了这个接口,它就可以很容易适应于应用程序。换句话说,想象一下当你需要创建另一个表单或者报告的时候它的用途。并不需要更改主程序为新模块添加IF语句,你只要在新模块中实现IExpenseReport接口它就可以在程序中完美地运行。 IExpenseReport接口: 程序代码 每个模块(Module)都实现这个接口,定义各自的名为expenseReport的set函数。下面是ChartModule的根标签和接口IExpenseReport的实现: 让我们回到主程序,RadioButton的click事件会卸载任何当前已加载的模块然后加载一个新的模块。下面是ChartModule的RadioButton标签: 程序代码 这个click事件会调用上面列出的readyModule事件。 编译并运行程序 如果你使用了FlexBuilder2,请确定更改了项目的Properties将模块(Module)作为"Applications"包含进来。这样FlexBuilder2回将它们编译进SWF文件并且放进bin文件夹中。 FlexBuilder注意:要创建一个使用模块(Module)的工程,请使用工程的Properties将模块文件作为"Applications"。这会使得他们被编译进SWF文件。 一旦SWF文件被创建你就可以运行主程序并点击RadioButtons在模块(Module)之间切换。 FlexBuilder注意:FlexBuilder并不会保存任何关于模块(Module)和主程序的从属信息。只要你对一个模块(Module)作了更改,你就可能需要重新编译主程序或其它从属的模块(Module)。 如果你查看一下主程序的SWF文件和Flex模块化中模块的SWF文件的话,你会发现它们的大小差不多。这就说明,模块的SWF和主程序SWF中有很多同样的组件定义。 FlashPlayer并不会保存元件(symbol)的副本。例如,如果主程序有一个Button组件而一个模块(Module)也有一个Button组件,FlashPlayer就不会从模块中加载Button了,因为它已经在主程序中有定义了。 使用-link-report=report.xml编译主程序,这样会创建一个链接到主程序的包含所有元件信息的文件。然后在编译模块(Module)的时候会使用那个report.xml文件。 程序代码 当ChartModule被编译的时候,所有在report.xml文件中列出的元件将会在它的SWF中省略。当我不使用report.xml文件编译ChartModule.swf的时候,它的大小是202K。而当我使用report.xml文件的时候,SWF的大小只有68K。这大大减少了模块(Module)的加载时间。 在文章的开始将到模块(Module)的时候,我提过接口有另一个作用。假设你没有使用接口而是在主程序中引用模块的类。当你运行link-report的时候,你的模块类将会出现在report.xml中。当你使用使用link-report编译模块(Module)的时候你的模块并不会包含在它自己的SWF中!起初这并不会成为一个问题,尽管主程序由于包含了模块的定义而变得很大。然而,当你更改你的模块的时候发生了什么才是重要的。如果你没有重新编译主程序,你主程序的SWF文件将会包含模块(Module)旧的定义——而不是你已经更改过的。 程序代码 如果你决定使用这个技术来减小模块(Module)的大小,那么就使用接口来确保终端用户使用的总是模块(Module)的最新版本。 FlexBuilder注意:FlexBuilder在一个工程里没有办法做到这些。如果你确定你将要创建一个使用模块(Module)的工程,可以考虑一下将公共的类和接口(包括event类)放到一个SWC(FlexLibraryProject)中然后将模块(Module)分离到它们各自的工程里。 或者,你可以将所有东西创建为一个单一的Flex工程,然后将最优化作为一个产品化前或测试前的部署步骤在FlexBuilder之外进行。 ?将程序分割成多块并不是每个人都会使用模块(Module)。使用这种方法主程序会比平常小,而且多数用户只使用整个程序的一部分。
?应用程序越大测试过程越复杂;
?应用程序越大部署过程越复杂;
?SWF文件越大加载时间越长
程序代码
程序代码
将SWF文件最优化
Flex模块化总结
?使用接口来使主程序或模块(Module)来与加载的模块通信。这使维护变得容易。
?使用-link-report命令参数编译主程序来产生一个使用元件列表。
?在主程序中使用-load-externs和report.xml编译模块(Module),这样可以使它们变得更小。
发表评论
-
Flex数据绑定及其使用频繁的几种情况
2011-10-20 03:39 1445http://developer.51cto.com/art/ ... -
揭开Flex正则表达式的神秘面纱
2011-10-20 03:38 1220http://developer.51cto.com/art/ ... -
Flex模块化开发优势及技巧解析
2011-10-20 03:38 1750http://developer.51cto.com/art/ ... -
[转]Flex模块化的目的及其步骤
2011-10-20 03:35 1199http://developer.51cto.co ... -
翻译: Flash文本引擎, 第三部分: 布局
2011-10-20 02:36 0http://www.riade ... -
翻译: Flash文本引擎, 第二部分: 交互
2011-10-20 02:34 0http://www.riadev.com/flex-thre ... -
翻译: Flash文本引擎, 第一部分: 概述
2011-10-20 02:33 0http://www.riadev.com/flex-thre ... -
[转]flex操作XML,强力总结帖
2011-08-16 01:10 1049http://qiqishou.iteye.com ... -
[转]用ActionScript 开发高级可视化组件
2011-08-14 04:37 0用ActionScript 开发高级可视化组件 -
[转]AIR2.0 NativeProcess in Flash Builder 4.0
2011-08-07 23:37 1483AIR2.0 NativeProcess in Fla ... -
[转] Actionscript项目嵌入图片(设置九宫格缩放)
2011-07-27 02:04 2354我们知道在Flex项目中,嵌入外部图片,可以使用 [E ... -
[转]NumericStepper添加百分号
2011-07-26 23:32 1132请问 NumericStepper组件中添加百分号 ... -
[新闻资讯] [Flash/Flex] 走自己的路:重写AIR移动应用程序中的BACK按键
2011-06-15 13:44 1242http://bbs.9ria.com/viewthread. ... -
[转]关于Spark List控件和Spark DataGrid控件的提示
2011-06-02 05:23 1437http://bbs.9ria.com/viewthread. ... -
flex 3 能使用openwithDefaultApplication吗
2011-06-02 05:05 0最近用到了 使用air 来开启外部的程序。 我知道flash ... -
[Flex]Flex编程注意之Flex Complier参数
2011-05-19 19:56 1092http://fykyx521.iteye.com/blog/ ... -
Aarry和AarryCollection
2011-05-18 00:06 1227在AS3里面,数组里面可以存储字符串、数字、布尔值、或引用的类 ... -
[Flash/Flex] 给一个TitleWindow添加按钮的方法
2011-05-07 01:38 1689资讯类型: 翻译 来源页面: http://userflex. ... -
[转][Android] Android桌面应用程序-交通灯游戏源码
2011-04-25 02:46 0http://bbs.9ria.com/viewthread. ... -
[转] [Flash/Flex] 在Flex4.5中检测网络连接类型
2011-04-24 00:03 1368http://bbs.9ria.com/viewthread. ...
相关推荐
### Flex 模块化应用程序开发 模块化设计在软件工程领域有着重要的意义,尤其是在像Flex这样的框架中。Flex是一款由Adobe公司开发的开源框架,用于构建高性能、具有丰富交互性的Web应用程序。通过采用模块化的开发...
Flex模块化开发是一种高效构建大型复杂应用的策略,它允许我们将应用程序分解为多个独立的、可重用的组件或模块,以提高代码的可维护性和可扩展性。在这个实例中,我们将深入探讨Flex模块化开发的关键概念和技术。 ...
Flex模块化开发是一种高效、可扩展的软件架构方式,它允许开发者将大型应用程序分解为多个独立的、可重用的组件或模块。在本案例中,“flex 模块化 modules 源码”指的是使用Adobe Flex框架进行模块化编程的具体实现...
Flex 基于 Module 模块的...在实际开发中,运用 Flex 的模块化开发方式,可以构建复杂且可扩展的用户界面,同时优化应用程序的性能和维护性。通过合理地组织模块,可以确保代码结构清晰,便于团队协作和项目长期维护。
《企业应用FLEX开发实战》是一本专注于使用Adobe FLEX进行企业级应用程序开发的实践教程。本书涵盖了从基础到高级的各个层面,旨在帮助开发者掌握FLEX技术在实际项目中的应用,提升软件开发效率和质量。书中内容分为...
- 提供了改进的性能优化,如异步模块加载、模块化应用程序的快速开发等。 3. 开发环境: - Adobe Flash Builder 4:一个基于Eclipse的集成开发环境(IDE),支持MXML和ActionScript的开发。 - Flex SDK:一套开发...
#### 模块化应用程序概述 在Flex框架中,模块化设计是一种非常重要的开发模式,它允许开发者将大型应用分解为多个独立的小型组件,这些组件可以在需要时动态加载到主应用中。通过这种方式,可以显著减少初始SWF文件...
Flex模块化主要通过Flex Module Framework(模块框架)实现,这是一个内置于Flex SDK中的组件,支持在运行时动态加载和卸载模块。这种动态加载能力使得Flex应用程序能够根据用户需求或网络状况来决定加载哪些模块,...
在Eclipse环境中,同时开发J2EE模块和Flex客户端模块是一项常见的任务,特别是在构建富互联网应用程序(Rich Internet Applications, RIA)时。这样的组合允许后端服务器处理业务逻辑和数据管理,而前端Flex客户端则...
Flex桌面应用是基于Adobe Flex技术构建的用于开发桌面应用程序的框架。Adobe Flex最初是一个用于创建富互联网应用程序(RIA)的工具,后来发展出能够构建桌面应用程序的功能,这得益于Adobe AIR(Adobe Integrated ...
- 通过利用其丰富的 API 和组件库,可以快速开发出具有高度定制化功能的应用程序。 - 开发过程中需要注意的关键点包括兼容性、性能优化和安全性等方面。 #### 六、附录:ArcGIS Viewer for Flex - **简介**:ArcGIS...
在“Flex4基于FluorineFx模块化系统框架”中,开发者利用最新版本的Visual Studio 2010作为.NET开发环境,同时使用FlashBuilder 4.5作为Flex应用程序的构建工具。这两个工具的结合使得前后端开发无缝对接,提高了...
在开发 Flex 应用程序时,Spring Actionscript IOC 框架和 Cairngorm MVC 模式结合使用,可以显著提升代码的可维护性和可扩展性。Spring Actionscript 是一个针对 Actionscript3 设计的轻量级框架,其灵感来源于 ...
- **Flex**:由Adobe Systems开发的一种开源框架,用于构建跨浏览器和跨平台的RIA(Rich Internet Applications)应用程序。 - **Flex 3**:Flex 3作为Flex系列中的一个重要版本,提供了更多的功能和改进,包括增强...
1. **Flex简介**:Flex是一个强大的开发工具,主要用于创建交互式、高性能的Web应用程序。它的核心是Flex SDK,包含了一系列用于开发、编译和调试Flex应用的工具和库。Flex支持事件驱动的编程模型,允许开发者构建...
Flex模块间通信是Adobe Flex应用程序开发中的一个重要概念,它允许不同模块之间共享数据、功能和服务。在大型项目中,模块化设计有助于代码组织和管理,提高代码复用性,同时降低复杂度。本示例将深入讲解如何在Flex...