22.12.使用连接报告优化模块

22.12.1.问题
我想减小文件大小和模块的后续下载时间。

22.12.2.解决办法
当编译应用程序时使用mxmlc工具的link-report命令行参数生成一个连接报告文件,然后在编译模块时把报告文件作为load-externs命令行参数值,确保只有模块需要的类被编译进来。

22.12.3.讨论
当你编译模块时,所有模块依赖的自定义或框架代码都被编译进生成的SWF文件中。在这些代码中,特别是框架代码很多都是和主程序和模块所共有的。你可以根据一个连接报告文件删除模块中多余的代码以减小文件大小。

连接报告文件列出了主程序依赖的类,当编译主程序时使用link-report命令行参数生成连接报告文件。下面的命令生成连接报告文件report.xml:
>mxmlc -link-report=report.xml MyApplication.mxml
生成的连接报告文件供编译模块时用,要删除多余的代码,减小模块文件大小,编译模块时使用link-externs命令行参数值设置为刚才生成的连接报告文件:
>mxmlc -link-externs=report.xml MyModule.mxml
生成的模块SWF文件不包含任何主程序和模块依赖代码。当你的主程序和模块都有框架代码时这是一个很好的优化工具。根据连接报告文件排除的代码和主程序和模块有一定关系的,也就是说如果主程序代码发生改变,你就需要重新生成连接报告文件并重新编译模块。

如果主程序使用多个模块,这项技术也可被用来编译那些在主程序中多余,而多个模块都需要的代码。实际上,这是通用的规则去编译任何管理类,比如mx.managers.DragManager 和mx.managers.PopUpManager,模块可能依赖于主程序。这是因为模块不能访问另一模块的资源,否则就会抛出运行时异常,例如一个模块试图引用其他模块的DragManager。

要确保模块都是引用主程序中的同一个管理器,你需要在主程序中导入和申明一个类本地变量:
+展开
-ActionScript
import mx.managers.PopUpManager;
var popUpManager:PopUpManager;

用生成的连接报告文件去编译模块,确保模块都是使用同一个管理器引用,以减少代码冗余和模块大小。

加支付宝好友偷能量挖...


评论(0)网络
阅读(75)喜欢(0)flash/flex/fcs/AIR