【发布时间】:2011-12-19 11:44:51
【问题描述】:
你们中的任何人都知道 ItemRenderer 和 Repeater 之间的区别。 两者的行为几乎相同。有什么区别吗?
【问题讨论】:
标签: actionscript-3 apache-flex flex4 flex3
你们中的任何人都知道 ItemRenderer 和 Repeater 之间的区别。 两者的行为几乎相同。有什么区别吗?
【问题讨论】:
标签: actionscript-3 apache-flex flex4 flex3
你们中的任何人都知道 ItemRenderer 和 中继器。两者的行为几乎相同。有什么区别吗?
我不确定它们如何表现相同,但如果没有看到您的代码,很难判断。我将尝试解释其中的区别;更确切地说;每一个是什么。
在后台 itemRenderer 是ClassFactory。工厂是创建其他类的类的设计模式。在 Flex 的上下文中,itemRenderer 用于基于列表的类,例如 DataGrid 或 List。基于列表的类接受一个 dataProvider 并且只呈现在屏幕上看到的元素。当您滚动列表时,itemRenderer 生成的每个组件都会被重用。我称之为渲染器回收。因此,实现 itemRenderer 以响应 dataChange 事件非常重要,因此它始终正确呈现它应该表示的数据。有关itemRenderer components 的更多信息。
Repeater 就像 MXML 中的循环。使用转发器不会提供基于列表的类所提供的任何“渲染器”好处。在循环中创建的所有内容都会立即渲染。
所以,假设您有一个包含 100 个图像的 dataProvider。您有空间在屏幕上显示其中的 10 个。使用基于列表的类,flex 将渲染和加载 10 张图像;滚动列表时更改加载的内容。使用 Repeater Flex 将一次渲染和加载所有 100 个,即使并非所有这些都在屏幕上。
【讨论】:
最大的不同:Repeater 已被弃用。它作为仅在 Flex 3 中的 mx 组件存在,在 Flex 4 中没有等效的 Spark。建议您改用 DataGroup+ItemRenderer。 @www.Flextras.com 的回答非常清楚地解释了造成这种情况的主要原因。
除此之外,IMO 除了最基本的使用中继器之外的任何东西都可能是一个严重的痛苦。它的范式与所有其他 Flex 组件完全不同,而 DataGroup+ItemRenderer 方法非常符合 Flex 组件集。
底线:不要使用中继器。使用Repeater 没有什么是DataGroup+ItemRenderer 无法做到的。 (除非您出于某种原因无法使用 Flex 3。请参阅 Amy 的 cmets 了解更多信息。)
【讨论】: