理解 Flex itemRenderer 第 5 部分: 效率
原文地址:http://www.adobe.com/cn/devnet/flex/articles/itemrenderers_pt5.html
如果您要显示大量 itemRenderer-无论在 DataGrid 还是在 AdvancedDataGrid 中-如果无法有效编写这些 itemRenderer, 您的应用程序性能可能受到负面影响。以下是一些可能有所帮助的提示:
限制使用 itemRenderer 的列数。是否真的需要将每个列作为自定 itemRenderer?有时需要这样, 光芒太强是否会令用户头晕眼花?
尝试不要过于频繁地更改 itemRenderer 中元素的样式。如果需要切换样式 (例如, 绿色用于正值, 红色用于负值) , 可考虑为这些样式创建两个控制预设并使其中一个可见。更改样式 Flex 中比较费时的任务之一。
不要将 Containers 用作 itemRenderer 的基础。容器会占用大量资源。少量使用它们, 效果还不错; 但是根据 UIComponent 编写 itemRenderer 效率更高。
本系列包含以下文章:
第 1 部分: 内联渲染器
第 2 部分: 外部渲染器
第 3 部分: 通信
第 4 部分: 状态和过渡
第 5 部分: 效率
要求
为了充分利用本文, 您需要以下软件和文件:
Flex Builder 3
必要条件:
要从本文中受益, 您最好熟悉 Flex Builder 和 ActionScript 3.0。
切换样式
以下 itemRenderer 根据数据字段的值切换组件。
<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>
这比设置样式要快。要注意的其他事项包括:
避免数据绑定到样式。更改样式不仅比大多数操作要慢, 而且在它上面添加数据绑定代码只会使它更糟。
使用 Canvas 或扩展 ListItemRenderer 或作为 itemRenderer 的根。这允许您将控制放在各自上方。
扩展 UIComponent
目前编写 itemRenderer 最有效的方式是使用 ActionScript 类扩展 UIComponent。您可以全面控制代码, 并且渲染器也可以尽可能高效。
从上例切换样式开始, 编写一个扩展 UIComponent 的简单 itemRenderer。
package renderers
{
import mx.controls.listClasses.IListItemRenderer;
import mx.core.UIComponent;
public class PriceItemRenderer extend
相关文档:
1-首先写一个加载外部swf文件的类
package Package
{
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.events.*;
import flash.net.URLRequest;
import mx.core.UIComponent;
import mx.events.FlexEvent;
public class CtmOb ......
学Flex也有一段时间了,参考了许多人的资料。一直想着自己写点东西分享给大家。如是,自己准备写这样的一个RPG游戏DEMO的系列。或许自己的算法,结构上设计有些许问题,但仍希望能给大家带来帮助,不好的地方请PASS掉。。。~~游戏也参考了深蓝色右手的许多设计思想,在此向其表示感谢。他的博客地址:http://w ......
对AS、Flex等知识进行汇总,方便大家学习和查找……
温馨提示:
1.下载教程请注意方法,鼠标右键点击链接从弹出菜单中选择迅雷等工具下载,服务器有时太繁忙还请耐心等待一下;
2.单个教程的分卷压缩包请全部下载后解压,否则解压会出现缺包的情况导致解压失败;
3.如还有问题,可以利用三种方法提出:
......
1) 编译CSS资源
文件浏览器(Navigator)中,在标准的Flex CSS文件上点击右键,点击Compile CSS to SWF即可完成编译CSS的任务。
在程序中可以用StyleManager.loadStyleDeclarations()来读出已编译好的CSS文件中的内容。
具体操作如下:
&nbs ......