Flex 性能优化

转自:http://bbs.9ria.com/thread-82850-1-1.html

1. 关于存储

使用适当的 Display Object
* Shape – 没有交互(占内存少)
* Sprite – 有交互(占内存多)
* MovieClip – 有时间线(占内存更多)
尽可能重用对象,而不要重新创建
强制类型转换 int(exp) 要比 Math.floor() 和 Math.ceil() 快很多
使用对象池技术重用对象
释放内存 – 将所有对象的引用设置为 null
尽可能重用 BitmapData
Callback 要比 event 快而且消耗更少的内存

2. 减少 CPU 使用率

即便将一个 Display Object 从 stage 上移除了( removeChild ) 甚至是已经将它的引用设置为 null,它依然有可能在消耗 CPU。所以要在其移出 display list 时将其完全停下来(比如 mc.stop() )。
卸载从外部装载的内容时,使用loader.unloadAndStop(),而不要使用 loader.unload()。
尽可能禁用鼠标交互。obj.mouseEnabled = false; obj.mouseChildren = false;
Timer 在某些情况下比 ENTER_FRAME 要好。
减少 tweening 的使用。

3. ActionScript 性能

尽可能使用 Vector 替代 Array。固定长度的 Vector 更快。( Vector 可以这样初始化:var coords:Vector.<Number> = Vector.<Number>([132, 20, 46, 254, 244, 100, 20, 98, 218, 254]);)
新的 drawing API 更快,它们是:drawPath, drawGraphicsData, drawTriangles。
使用 setVector() 方法来处理像素。
使用 setPixel() 和 setPixel32 方法时,要配合使用 lock() 和 unlock() 方法。
使用 TextField 时,appendText() 方法比 += 操作符要快。
尽可能在避免在循环内更新 TextField。
尽可能少使用方括号操作符访问 Vector 或 Array 元素,可以利用一个临时变量来操作。
尽量将代码内嵌,避免过多的函数调用。(比如用 value > 0 ? value : -value; 来代替 Math.abs())
代码量过大也会造成性能的降低。尽量少使用大型第三方库(Flex, TLF)。
避免在循环内使用取值表达式(myArray.length)。用临时局部变量来操作。
更多优化技巧参考:http://www.rozengain.com/blog/20 ... t-30-optimizations/

4. 渲染性能

尽可能避免使用 alpha 参数。
适当的使用 cacheAsBitmap 可以大幅提高性能。(对于变化少的矢量元件)
针对每个子元件使用 cacheAsBitmap 而不是针对父元件使用。
使用 TextLine 处理静态文本比 TextField 快而且使用更少的内存。
使用 cacheAsBitmap 和 opaqueBackground 参数可以改进渲染性能(包含 TextField )。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值