提高flex性能之itemRenderer篇
来源:互联网 发布:asp网上报名系统源码 编辑:程序博客网 时间:2024/05/22 03:42
之前我有总结过如何提高flex性能的文章,最近又碰到一个问题,就是对大批量数据的时候DataGrid中采用很多itemRenderer,性能将是一个大问题。于是寻找有关权威文章,期望能有所收获。在Peter Ent的blog上还是得到了不少帮助,原文是英文,也有人做过翻译,我这里就简单提取一部分仅供参考。需要详细,建议查看原文。
当我们在用itemRenderer显示大量数据的时候,无论是在DataGrid或者是AdvanceDataGrid(Flex3),如果我们的itemRenderer效率低下,那么整个系统的性能将大受影响。这里列出几个比较好的建议:
- 尽量少用itemRenderer,这个没什么说的,能不用的尽量别用。
- 不要频繁的更改itemRenderer的风格change style。也就是很多人喜欢的setStyle(‘’,’’),比如更具数据变化背景颜色之类的,其实这个是很要命的,数据量小没什么感觉,数据量大了,效果就出来了。这个我在之前的文章也提到过这一点。其实可以有其他方法替换,后面详细讲。
- 尽量不要用容器Cantainer作为itemRenderer的基类。也就是我们常用的HBox和VBox,我的建议是宁愿用Canvas也不要用前者。至于原因将起来就复制一些。如果对高级flex开发人员来讲,我们应该尽量用UIComponent,作为基类,也就是所有界面元素的父类。
不用setStyle方法的替代法
这里有个很好的例子,就是根据所在列的数据来变更具体要显示的控件,以此来达到变换背景色的目的。
<mx:Canvas>
<mx:Script><![CDATA
private function lessThanZero() : Boolean {
return data.price < 0;
}
]]></mx:Script>
<mx:Label text="{data.price}" color="#FF0000" visible="{lessThanZero()}" />
<mx:Label text="{data.price}" color="#00FF00" visible="{!lessThanZero()}" />
</mx:Canvas>
这种方法可比setStyle来得快多了,但是在程序设计上稍显麻烦。
这里还需要注意的几点:
- 避免把风格和数据进行绑定,数据随时在变,style也随时在变的话可以想想它的性能。
- 采用Canvas或者继承ListItemRenderer来作为itemRenderer的主容器,这样便于你自己对各个空间进行控制
另外如何采用UIComponent作为itemRenderer的容器基类,有兴趣的朋友可以参考原文,这里不做翻译和解释,原文其实讲的很明白了。
- 提高flex性能之itemRenderer篇
- Flex之旅--项呈示器ItemRenderer
- Flex itemRenderer
- ItemRender---之理解 Flex itemRenderer - 状态和过渡
- Flex 学习之中之二十一 itemRenderer的用法
- Flex DataGrid 内联 itemRenderer
- Flex Tutorial - Image ItemRenderer
- Flex ItemRenderer CheckBox Sample
- flex DataGrid自定义 itemrenderer
- flex 内联 itemRenderer《一》
- flex datagrid column itemRenderer
- flex DataGrid自定义 itemrenderer
- 提高flex应用性能方法
- 提高flex应用性能方法
- ItemRenderer性能优化
- flex ItemRenderer 模版组件事件
- flex itemRenderer CheckBox 的使用
- 理解Flex itemRenderer(3)--通信
- 解决Ubuntu的乱码问题
- 实用Common Lisp编程——函数
- poj 3450 Corporate Identity 枚举+kmp,话说这家伙给我一顿超时啊!!!!
- 工作日记2011-10-9
- 用ROSE从现有C++代码导出类图
- 提高flex性能之itemRenderer篇
- makefile中搜寻头文件路径
- 工厂方法(python)
- linux下解压zip文件
- Web Service 调用
- 2011-10-09
- 配置iis解析php
- Undefined symbols for architecture i386 error when compiling siphon for iphone simulator
- Windows Phone 7 开发之Microsoft.Phone.Tasks中的各项Task