【发布时间】:2012-10-20 01:06:57
【问题描述】:
我有自己的自定义组件。该组件从一个基本容器扩展而来。我希望能够访问正在可视化的 itemRenderer 实例。我知道组件 mx:list 有一个内部 getter,它提供一个数组数组,其中包含呈现每个数据提供程序项的 itemRenderer 实例。我想要同样的东西。知道如何做到这一点吗?
更具体地说:我正在将我的 dataProvider 项的 selected 属性设置为 true 或 false。从我的 ItemRenderer 的 updateDisplayList 函数中,我检查属性的更改并更正所选属性的边框颜色。不幸的是,我必须强制使用 updateDisplayList 函数。我已经在列表中的 ItemRenderer 上做过一次。只有列表才是实用的,因为通过制作我自己的列表,我能够获得正在渲染的项目列表,因此可视化(不能很多)。通过渲染的 Items 和 updateDisplayList 没有开销。但在这种情况下,我可以有 100 个项目。想象一下检查和更改这么多项目的样式。谢谢
【问题讨论】:
-
在 Flex 3 中,
Container、VBox、HBox和Canvas等容器类不使用项目渲染器。只有基于列表的控件可以(List、HorizontalList、DataGrid等)。容器类仅呈现添加到它们的子对象。在 Flex 4 中有一个使用项目渲染器的DataGroup容器类,但在 Flex 3 中没有这样的容器。 -
这里的问题是你为什么要访问渲染器?你需要让渲染器做他们最擅长的事情,那就是渲染。没有什么是您无法从控件和数据提供者的组合中计算出来的。
标签: actionscript-3 apache-flex flex3