现在说说Module,这篇教程代码不是最重要的,怎么样合理的使用Module以及注意的问题才是关键,所以建议大家注意下面红色语句。Module,可以将我们的项目按需划分为N个模块,在编译时将项目编译为主文件以及N个module的swf。Module基本上可以分为两种:
- 完整的Module,可以被外部app所使用 -- 会将所有涉及到的引用编译到module中,主文件的体积得到缩减,但是Module本身的体积可能会很大,比如Module和主程序都应用了对象C,那对象C会被编译到主程序以及Module中,这样Module的体积就会很大。
- 关联到主程序的Module -- 比如Module和主程序都应用了对象C,那对象C会只编译在主程序中,从而减小Module的体积。我今天主要讲这一种Module,也是我们最常用到的。
了解了Module的种类,再简单说说使用Module要注意的地方。
- 绝对不能在Module以外的地方直接引用Module中的对象。这样Module会被编译到引用它的模块中去,如果从主程序中引用,那么Module就实际上没有效果了。
- 既然不能引用,那么建议对Module对象的使用用接口实现。在Module中实现接口方法,在外部使用这个接口不会导致Module被误编译。
- Module可以引用主程序中的东西,但是不要引用其他Module中的东西。
Module可以做什么呢?我主要将Module用于以下下两种情况
- 缩减主程序的体积,点击Module功能块时加载Module.
- 再入主程序后在用户感觉不到的情况下预加载剩下的Module.
现在讲正题,在demo中我这样表现Module的使用。(为了体现Module的意义,主程序生成的大小是原始flex大小248K, module内嵌了两张图片是674K)
- 如何创建Module.
- 主程序中点击按钮加载Module PictureWindow.
- 加载完毕后将模块添加到Box中,并通过接口调用PictureWindow中的方法setSelectIndex()设置显示的图片。
1. 如何创建Module.
可以通过New --> MXML Module -->Optmize for applicaiton --> OK 或者修改任意的已经创建好的Container组建(比如Canvas, panel)标签为Module,再或者继承Module的As class。
之后确保“鼠标右键项目”--> Property --> Flex Module 中有这个Module,没有的话点Add --> 选择Module的mxml或as文件 -->Optmize for applicaiton -- > OK
2. 主程序中点击按钮加载模块PictureWindow.
这里我使用了ModuleManager来动态加载需要的Module。这比ModuleLoder要灵活的多。
private function loadModule():void{
m = ModuleManager.getModule("PictureWindow.swf"); //设置Module地址,地址是编译后swf在bin中的位置
//设置事件监听
m.addEventListener(ModuleEvent.READY,loadReady);
m.addEventListener(ModuleEvent.PROGRESS,loadReady);
m.addEventListener(ModuleEvent.ERROR,loadError);
m.load(); //加载Module
}
3. 加载完毕后将模块添加到Box中,并通过接口调用PictureWindow中的方法setSelectIndex()设置显示的图片。
PictureWindow实现了PictureWindowInterface接口,其中暴露了setSelectIndex方法。再次强调不要直接使用Module对象,如果我们不注意写成
var window:PictureWindow = e.module.factory.create() as PictureWindow,那整个Module就前功尽弃了
//Module加载完成
private function loadReady(e:ModuleEvent):void{
//将Module对象转换为PictureWindowInterface
var window:PictureWindowInterface = e.module.factory.create() as PictureWindowInterface
this.box.addChild(window as DisplayObject);
window.setSelectIndex(1); //通过Interface调用Module中的方法
}
好了,Module的使用就写这么多,看到这里你应该也可以创建自己的Module了,对于ModuleManager和IModuleInfo 中详细的内容,大家可以查阅Flex帮助。
分享到:
相关推荐
Adobe Flex4 教程帮助手册pdf
eclipse Flex Builder Plug-in and Adobe Introduce
Adobe Flex中文教程 很傻瓜的 适合新手
2. 本文所有资料均来自Flex 官方文档,其英文版权归Adobe 公司所有。 3. 文中某些内容根据译者的理解稍作改动,因此与原版英文在文字上不完全一致。同时,由于译者水平有限,翻译不妥之处请大家多多见谅。
Flex是一个基于组件的开发框架...Flex是一个建立在Flash平台上的富客户端应用开发工具包,Flex 作为富 Internet 应用(RIA)时代的新技术代表,自从 2007 年 Adobe 公司将其开源以来,Flex 就以前所未有的速度在成长。
使用Flex开发Adobe AIR程序--桌面快捷方式管理器,适合新手进一步熟悉api,遇到典型的问题,1)调用外部exe文件,2)打包,3)读写文件,路径问题,...
第 1 章: 导入服务并将数据绑定到应用程序组件 ...第 5 章: 通过分页管理对数据的访问 分页教程 (ColdFusion) 分页教程 (PHP) 第 6 章: 使用数据管理同步服务器更新 数据管理教程 (ColdFusion) 数据管理教程 (PHP
不说了,和<<Adobe Flex Builder 3.0官方使用教程>>一样为官方使用文档!
在Flex3的Module模块程序设计中,在Google中进行了大量的资料查找,综合比较各个资源后,将我认为最有价值的资料放在这里(全英文的)。 下载包中包括: 1、Adobe Creating Mudule Application.pdf 2、相似例子的源...
Adobe--Acrobat-X-pro--中文教程
Contents: <br>Chapter 1: Learning Flex Builder Chapter 2: About Flex Builder Chapter 3: Flex Builder Workbench Basics Chapter 4: Working with Projects Chapter 5: Navigating and ...
Adobe Flex 3.2 语言参考.chm
Adobe Flex 3 API 电子文档 Adobe® Flex™ 3 Language Reference
•Adobe Flex 4.6 SDK, Apache Flex 4.8 SDK (parity release with 4.6), Apache Flex 4.9.0 SDK, Apache Flex 4.9.1 or later •Using Adobe Flash Builder You should have the following at your disposal: ...
Adobe Flex Quick Starts Adobe Flex Quick Starts 1-3
本文所有资料均来自Flex官方文档,其英文版权归 Adobe公司所有。 均有实例代码讲解
adobe 官方文档的中文翻译版本。介绍了flex开发的基本知识,是新手入门的权威教程。
Adobe Flex 3 高级编程 源码
它是使用Adobe Flex和Adobe AIR开发的,适用于Android和iOS设备。 此版本当前仅具有桌面版本功能的一部分,并且不支持字幕编辑。 克隆存储库 要运行Babelium Mobile的开发版本,请首先克隆存储库 $ git clone git:...