和Flash的开发环境相比,Flex提供的组件库确实很诱人,但由于功能太全面,导致程序的体积大,有时候使用不当,可能会影响程序运行效率。
在Flex的帮助手册中,有一个专门的章节讲了程序的优化,下面是我结合帮助作的几点小结:
1、避免容器的多级嵌套,减少相对尺寸、相对定位的使用。 在使用百分比来给容器内的元件定尺寸,一旦容器中的任何一个元件的位置和尺寸变化,都会引发容器对所有子级的重定位动作。如果嵌套的级别很深,这个计算量会很大。
2、尽量使用轻量级的容器 Canvas是体积最小的容器,它只支持绝对定位。很多时候,都可以使用它来代替HBOx和VBox。另外,Canvas也是我们编写自定义容器性质组件的一个首选。它具有容器的基本功能,利于扩展。
3、避免使用大体积的组件,比如DataGrid、AdvancedDataGrid 大个子组件的功能强大,但开销也是非常大的。由于功能的复杂性,使得皮肤、样式、itemRenderer的实现都格外复杂。
4、处理数据时多用分页的方式 在使用数据类型控件时,尽量减少数据一次的显示量。比如TileList,它会把数据一次性全部创建,不管是不是需要显示,这样很浪费资源。 ViewStack 、TabNavigator等在处理元件时,并不是一次创建,只要元件在第一次被显示时才创建,这样,就避免的不必要的开销。
5、setStyle和styleName Flex 组件的皮肤都是可视化元件,组件在自身初始化时,会使用当前的样式比如styleName完成所有皮肤元件的绘制。如果我们在运行期间通过setStyle修改了组件的样式,组件的尺寸、位置就会作相应调整。联系到第一条,如果组件位于一个层级很深的容器中,也会有一个大的计算量。
经典论坛交流: http://bbs.blueidea.com/thread-2845214-1-1.html
本文链接:http://www.blueidea.com/tech/multimedia/2008/5664.asp
出处:RIA集散地
责任编辑:bluehearts
◎进入论坛RIA设计与应用版块参加讨论
|