Module基本上可以分为两种:

1.完整的Module,可以被外部app所使用 -- 会将所有涉及到的引用编译到module中,主文件的体积得到缩减,但是Module本身的体积可能会很大,比如Module和主程序都应用了对象C,那对象C会被编译到主程序以及Module中,这样Module的体积就会很大。

2.关联到主程序的Module -- 比如Module和主程序都应用了对象C,那对象C会只编译在主程序中,从而减小Module的体积。我今天主要讲这一种Module,也是我们最常用到的。
了解了Module的种类,再简单说说使用Module要注意的地方。

1.绝对不能在Module以外的地方直接引用Module中的对象。这样Module会被编译到引用它的模块中去,如果从主程序中引用,那么Module就实际上没有效果了。

2.既然不能引用,那么建议对Module对象的使用用接口实现。在Module中实现接口方法,在外部使用这个接口不会导致Module被误编译。

3.Module可以引用主程序中的东西,但是不要引用其他Module中的东西。

Module可以做什么呢?我主要将Module用于以下下两种情况

1.缩减主程序的体积,点击Module功能块时加载Module.
2.再入主程序后在用户感觉不到的情况下预加载剩下的Module.

现在讲正题,在demo中我这样表现Module的使用。(为了体现Module的意义,主程序生成的大小是原始flex大小248K, module内嵌了两张图片是674K)

1.如何创建Module.
2.主程序中点击按钮加载Module PictureWindow.
3.加载完毕后将模块添加到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中的方法
}

来自:http://flex-java-oracle.iteye.com/blog/543108

Flex Module优化相关推荐

  1. flex module不编译的问题

    很多人现在都开始使用module了 module的功能的确好用 但是由于编译器的问题 而导致module有错误不提示 则肯定不会有编译结果了 让人很是头疼 这里说一个 非常笨 但是非常有效的方法: 当 ...

  2. Flex性能优化常用手法总结

    Flex性能优化常用手法总结 随着Flex越来越多的被人们所熟知,越来越多的互联网也开始了RIA应用 .众所周知,目前国内的宽带应用并不是像很多发达国 家发达,个人应用带宽基本上都是2M以下的,怎么样 ...

  3. flex module 弹出窗问题

    代码: <?xml version="1.0" encoding="utf-8"?> <mx:Module xmlns:fx="ht ...

  4. 以前看flex 性能优化一文后记录

    名称 flex 性能 改善性能 避免多层嵌套容器 一条好经验是避免容器的嵌套超过三层 用 spacer 对象来填充不需要的空白 绝对定位和缩放 每个容器及其子对象大小和位置的计算会占用大量资源 对象位 ...

  5. flex Module之间的通信

    用一个最简洁的办法吧: 通过 parentApplication 两个共生模块间进行通信 在一个application 中同时加载两个模块module1和module2 在module1中有方法fun ...

  6. [汇总]Flex面试题及答案

    1.我不想在容器里显示滚动条怎么办? 答:指定horizontalScrollPolicy和verticalScrollPolicy为off 2.请问Flex bulider3可以创建几种不同的项目? ...

  7. flex面试题及答案

    在网上见到了一篇不错的关于flex面试题目,转来记录一下.希望有所帮助! 第一部分: 1.使用Flex Bulider3建立一下新的.mxml的页面时默认的背景是蓝色的,请问 用什么办法能修改掉此背景 ...

  8. Flex与Java通信之HttpService方式

    2019独角兽企业重金招聘Python工程师标准>>> Flex用RemoteObject方式与Java通信是最常用的方式,这是一种最直观的方式.当然Flex也可以用HttpServ ...

  9. flash/flex基础发展区别等

    原文地址:https://blog.csdn.net/xygg0801/article/details/53323136 很好的一篇文章 博主总结了很多资料 本文和大家重点讨论一下Flex和Flash ...

最新文章

  1. PSSH远程套件工具
  2. VS在windows进行网络开发UDP(一)
  3. 波卡链Substrate (7)Babe协议六“Secondary slot leader”
  4. 【Matlab】找到矩阵中每个连通域的最小值
  5. java 缓存ech_ehcache获取缓存空指针
  6. 从零开始的全栈工程师——html篇1
  7. 高效管理ASP.NET的JavaScript库
  8. 甲流病人初筛(信息学奥赛一本通-T1399)
  9. 其他数据类型存储空间大小(信息学奥赛一本通-T1018)
  10. 深入解析常量池与装拆箱机制
  11. 五、stdout,stdoin和stderr
  12. 中年程序员真的只能坐等被裁吗?
  13. struts1和struts2的区别2
  14. 四川传媒学院计算机应用技术分数,四川传媒学院历年各专业录取文化最低控制分数线一览表...
  15. windows 微信手机端退出登录,pc电脑端不退出的奇淫技巧
  16. 移动跨平台框架ReactNative文本组件Text【06】
  17. 如何从Gitlab上拉取代码
  18. mac +xcode 下WebDriverAgent环境配置
  19. BZOJ 2039: [2009国家集训队]employ人员雇佣 最小割 二元组建图模型
  20. 费九江市纪委无人性的审讯经过

热门文章

  1. sql server分页_SQL Server中的分页简介
  2. sql面试题sql语句_第二轮SQL面试问题
  3. modify sql_在SQL Server中使用JSON_MODIFY()修改JSON数据
  4. azure blob_不同的Azure存储类型(文件,Blob,队列和表)
  5. sql 缓冲池_监视SQL Server中的内存文员和缓冲池分配
  6. Git 安装和使用教程(更加详细)
  7. 【KPC】关于为什么不用Zepto而用JQuery
  8. 【转】Android 避免APP启动闪黑屏(Theme和Style)
  9. maven安装与配置等相关知识
  10. 做个犀利的码农:如何持续培养/更新自己的开发技能