原文地址:http://www.adobe.com/cn/devnet/flex/articles/itemrenderers_pt1.html
Flex 提供许多控制, 它们可以按不同方式显示大量数据。List 控制自己、DataGrid、Tree 以及包括图表和 AdvancedDataGrid 在内的可视类。默认情况下, Flex 列表控制将提供的数据显示为简单文本。但 Flex 的能耐远不止此, 列表控制提供了一种使用 itemRenderer 对其内容进行自定的方式。通过允许您使用 itemRenderer 完全控制列表每行 (或单元格) 的内容, Flex 使您能够编写出更引人注目、更具创意、更实用的应用程序。
本系列讨论 Flex itemRenderer 以及如何高效、有效地使用它们。本系列的第一部分侧重于内联 itemRenderer, 它们写入描述 List 控制的 MXML 标记中。之后的文章讨论使用 MXML 和 ActionScript 且更为复杂的 itemRenderer。
要求
为了充分利用本文, 您需要以下软件和文件:
Flex Builder 3
范例文件:
itemrenderers_pt1.zip (ZIP, 28KB)
必要条件:
要从本文中受益, 您最好熟悉 Flex Builder 和 ActionScript 3.0。
循环使用渲染器
人们经常尝试从列表外访问 itemRenderer。例如, 由于您刚从服务器那里收到新数据, 您可能要将 DataGrid 中第五行的第四列变为绿色。获取那个 itemRenderer 实例并在外部修改它对于 Flex 框架和组件模型而言是一个大工程。
要理解 itemRenderer, 您必须理解它们为何变成现在这样以及我们当初设计它们时的目的。在此, 当我用到“我们”时, 我指的是 Adobe Flex 设计小组。我与它没有关系。言归正传, 假设您要显示 1,000 条记录。如果您认为列表控制会创建 1,000 个 itemRenderer, 您就错了。如果列表只显示 10 行, 它会创建约 12 个 itemRenderer-这些足以显示各个可见行, 多出的几个则用于缓冲和性能。列表最初显示行 1–10。当用户滚动这个列表时, 它现在可能显示行 3-12。但那 12 个 itemRenderer 仍在那里: 及时滚动列表后, 也不会新建任何 itemRenderer。
以下是 Flex 执行的操作。滚动列表时, 那些依然显示相同数据 (行 3-10) 的 itemRenderer 将向上移动。它们并未发生任何变化, 只是移到了新位置。之前显示行 1 和 行 2 数据的 itemRenderer 现在移到行 10 的 itemRendere 下。然后, 为那些 itemRenderer 提供行 11 和 行 12 的数据。换言之, 除非您调整列表大小, 否则将重用/循环使用那些相同的 itemRenderer-它们只是移到新位置并且现在显示新数据。
Flex 的这一行为在特定编程
学Flex也有一段时间了,参考了许多人的资料。一直想着自己写点东西分享给大家。如是,自己准备写这样的一个RPG游戏DEMO的系列。或许自己的算法,结构上设计有些许问题,但仍希望能给大家带来帮助,不好的地方请PASS掉。。。~~游戏也参考了深蓝色右手的许多设计思想,在此向其表示感谢。他的博客地址:http://w ......
Getting Around Bug in Adobe Flex: TabControl Inline Event Handling for TabIndexChange Doesn't Work
I ran into this because I wanted to do something funky. I wanted my Flex app window to change PageStates (and size) whenever the TabIndex changed. Whether doing this kind of thing is wise ......