创建/设置所有自定义项目渲染器后的事件

时间:2012-07-12 17:11:04

标签: actionscript-3 flex actionscript

我在数据网格中使用自定义项目渲染器,并且需要根据渲染器中的任何值是否存在负值来使按钮可见或不可见。所以我想在第一个渲染器设置时将标志设置为false,如果有任何负值则将其设置为true,最后检查标志的值。我知道每次在渲染器实例中更改数据时我都可以调度一个dataChange事件,但是我想知道无论如何我都知道它们何时完成了? 谢谢!

2 个答案:

答案 0 :(得分:2)

没有这样的事件。

与任何其他Flex组件一样,渲染器将在创建后调度CREATION_COMPLETEItemRenderers通常是循环使用的(同一个对象被分配了要渲染的新数据),因此监听CREATION_COMPLETE是不够的,除非您禁用回收。

对于Spark List组件,您可以通过在布局类上设置useVirtualLayout=false来禁用回收。我不确定Spark DataGrid类是否支持这个。 MX DataGrid可能还有其他一些方法可以做到这一点。

但是,禁用回收可能会影响性能。我认为你的想法是DATA_CHANGE事件是最好的解决方案:

  • 确定数据的初始状态(即:是否存在任何负值)
  • 在渲染器中,使用DATA_CHANGE事件(或只是覆盖渲染器的data属性的setter)以了解数据何时发生更改
  • 当数据发生变化时,调度将冒泡的自定义事件类。此事件有一个属性,告诉您该值是否为负数。
  • 由于渲染器中的自定义事件将冒泡到网格,因此您可以在网格上添加一个侦听器来处理来自所有渲染器的更改。

答案 1 :(得分:1)

您应该查看RendererExistenceEvents。您应该能够根据列表中的项目数量或至少一次应该查看的项目来判断它们何时全部创建。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/events/RendererExistenceEvent.html