Adobe Flex迷你教程 -- 合理使用Module分割项目以及对Module的使用
来源:互联网 发布:关系数据库设计理论 编辑:程序博客网 时间:2024/04/30 03:21
转自http://bbs.airia.cn/thread-2811-1-1.html
现在说说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.
现在讲正题,在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,loading);
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中的方法
}
- Adobe Flex迷你教程 -- 合理使用Module分割项目以及对Module的使用
- Adobe Flex迷你教程 -- 合理使用Module分割项目以及对Module的使用[关于接口]
- Adobe Flex迷你教程 -- 合理使用Module分割项目以及对Module的使用
- 合理使用Module分割项目
- FLEX module的使用
- FLEX module的使用
- FLEX module的使用 .
- Flex Module的使用
- Adobe AIR迷你教程 — 使用自定义窗口以及对窗口的移动,缩放,关闭操作
- Adobe AIR迷你教程 -- 使用自定义窗口以及对窗口的移动,缩放,关闭操作
- flex中Module的使用
- flex中Module的使用 .
- Flex中Module的使用以及内存泄露问题解决方法
- Flex中使用模块Module的例子
- CVS 的module使用
- module的简单使用
- maven module 的使用
- Flex 使用module 父子窗口传值
- “自主”手机操作系统:如何判定及怎么做
- Kernel架构移植
- c++基础知识整理
- C++获取系统盘符
- auto、static、register、const、volatile 、extern 总结
- Adobe Flex迷你教程 -- 合理使用Module分割项目以及对Module的使用
- 操作系统习题解答
- Linux - 进程和信号
- Oracle日期处理
- 振南的 znFAT(前言)
- [iOS]设置Xcode 4同时支持旧版iOS设备(armv6),并兼容iPhone和iPad
- A Knight's Journey poj DFS
- linux常用命令汇总
- visual c++ 2008进行MySQL编程(ODBC)-- (四) 终极实现 之 派生CRecordset 下