名称
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