Flex优化

一,概述

在使用SWFLoader控件加入外部Flex的SWF程序时,可以剔除其中与主SWF程序重复的类。步骤:

1,使用-link-report参数产生linker report:mxmlc -link-report=report.xml MyApplication.mxml

2, 使用-load-externs参数指定使用该report: mxmlc -load-externs=report.xml MyLoadedApplication.mxml

3,编译:Compile the loading application:mxmlc MyApplication.mxml

但要注意这样编译出来的SWF程序和以后版本的Flex不一定兼容。

在开发Flex应用程序的过程中,注意一些事项对提高应用程序性能会有所帮助: 01 : 确保客户端的FlashPlayer在7.0.14 以上版本; 02 : 尽量使用Flex导航容器,如Accordion、TabNavigator或ViewStack组件来组织和创建客户端内容; 03 : 使用合适的布局、层次和关联,避免不必要的嵌套; 04 : 使用Grid容器使得布局更精确; 05 : 设定好对象的宽高; 06 : 学会使用mx:Spacer标记增强排版; 07 : 有些时候使用mx:VBox标记是多余的; 08 : 使用creationPolicy属性对容器实例化; 09 : 对大量的数据集采用分页或其它方式处理; 10 : 平稳的播放过于复杂的效果,可以配合effectStart 和 effectEnd 事件; 11 : 使用mx:Style标记动态设置样式达到好的性能; 12 : 设置recycleChildren属性来提高重复对象的性能; 13 : 使用动态共享库RSLs来提高应用程序性能; 14 : 记录应用程序初始化时间; 15 : 用gettimer()方法计算组件和数据加载时间;

flex改善性能

避免多层嵌套容器 一条好经验是避免容器的嵌套超过三层 用 spacer 对象来填充不需要的空白 绝对定位和缩放 每个容器及其子对象大小和位置的计算会占用大量资源 对象位置固定编码 使用 Canvas 容器,其它类型的容器(如 Vbox)无法使用绝对位置 将对象宽度和高度固定编码 可减轻相对布局管理器的处理负荷,从而加速容器和控件的创建 避免的常见容器冗余 <mx:Panel> 标签中的 VBox 容器 <mx:Application> 标签中的 VBox 容器作为 MXML 组件的顶层标签,能不用时可以舍弃 MXML 组件外包上不必要的 VBox 容器来设置某些样式,可以在组件上设置样式 重新评价对容器的选择 改善性能感受 推迟实例化 在可以不必一个屏幕显示时可以使用 Flex 中的导航条容器(ViewStack、Accordin、TabNavigator)中内置了推迟实例化,默认推迟实例化 creationPolicy=“auto,all,none” 渐进式布局 需要一个屏幕显示,但重绘有效率低时 使用运行时样式得到良好性能(不宜多用) 注意:第一次最好不要使用setStyle() 方法 样式使用 <mx:Style> 块中(作为 MXML 标签的一个显式属性) 外部 CSS 样式表,(全局样式) 数据服务 flash 安全沙箱 由于 Flash Player 安全沙箱的存在,对 web 服务的请求只能到 加载 SWF 文件的同一个域。 使用代理(不在同一主机或域) useProxy=“true”属性直接调用服务。 不使用代理(在同一主机或域) useProxy=“false”属性直接调用服务。终端服务必须有 crossdomain.xml 文件。 两种性能最好的发送数据方法是使用 HTTPService 的 XML 和使用 AMF 的 RemoteObject。 Web 服务代理 <mx:WebService> 远程对象代理<mx:RemoteObject> HTTP 服务<mx:HTTPService> 实施 预编译 MXML 页 预编译应用程序还能使开发者分发不带源码的应用程序。

flex 1.在 mx.swc 看原类中的一些函数 2. cellRenderer,labelFunction 查看 CellRenderer API 3.Effect 使用 改变显示效果<mx:Effect> mouseDownEffect mouseOverEffect mouseUpEffect moveEffect resizeEffect showEffect mouseOutEffect hideEffect 3.其它技巧看 flexbook

JavaScript 1.直接使用 getUrl 使用JavaScript 打开全屏窗口 getUrl(javascript:void(window.open('test.mxml','newwindow','fullscreen=yes,type=fullWindow,scrollbars=no,directories=no,status=no,menubar=no'))); 关闭当前窗口(无提示关闭) getUrl(javascript:window.opener = 'dsg';window.close();); 2.在生成的html 文件中加入 JavaScript ,通过 getUrl使用 JavaScript

参见

自我精简类包的有效方法

Flex 应用程序性能: 改善客户端应用程序和服务器性能的技巧与技术