Actionscript 3 创建/设置所有自定义项呈现器后发生的事件

Actionscript 3 创建/设置所有自定义项呈现器后发生的事件,actionscript-3,apache-flex,actionscript,Actionscript 3,Apache Flex,Actionscript,我在datagrid中使用自定义项渲染器,需要根据渲染器中的任何值是否为负值,使按钮可见或不可见。因此,我想在第一个渲染器被禁用时将标志设置为false,如果有任何负值,则将其设置为true,最后检查标志的值。我知道每次渲染器实例中的数据发生更改时,我都可以调度一个dataChange事件,但我想知道是否还有其他方法可以让我知道何时所有这些都完成了? 谢谢 没有这样的事件 与任何其他Flex组件一样,渲染器将在创建后发送一个CREATION\u COMPLETEitemrender通常是循环使用

我在datagrid中使用自定义项渲染器,需要根据渲染器中的任何值是否为负值,使按钮可见或不可见。因此,我想在第一个渲染器被禁用时将标志设置为false,如果有任何负值,则将其设置为true,最后检查标志的值。我知道每次渲染器实例中的数据发生更改时,我都可以调度一个dataChange事件,但我想知道是否还有其他方法可以让我知道何时所有这些都完成了?
谢谢

没有这样的事件

与任何其他Flex组件一样,渲染器将在创建后发送一个
CREATION\u COMPLETE
itemrender
通常是循环使用的(同一对象会被分配新数据进行渲染),因此侦听
CREATION\u COMPLETE
是不够的,除非禁用循环

对于Spark
列表
组件,可以通过在布局类上设置
useVirtualLayout=false
来禁用回收。我不确定Spark
DataGrid
类是否支持此功能。MXDataGrid可能有其他方法来实现这一点

但是,禁用回收可能会影响性能。我认为您的想法和数据更改是最好的解决方案:

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

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


谢谢您的回复。我主要对如何知道何时使用第一个ItemRenderer以及何时完成网格中的最后一个ItemRenderer感到困惑。我有办法做到吗?你不行。每个渲染器将分派创建完成一次(创建时),并且每次数据更改时数据都会更改。由于您向网格提供初始数据,因此您知道初始值是否为负值。在此之后,必须使用data change事件来查找上述负值。抱歉,我认为我没有很好地解释我的问题:)我需要能够在每次渲染网格中的单元格集时判断是否存在负值。假设在第一次渲染所有这些对象时,其中一个值为负值,因此我将标志设置为True。下次用户在网格中向下滚动时,我希望它是一块干净的石板,因此我想再次将该标志设置为false,并且再次,如果任何渲染器获得负值,我将其设置为true。但是我猜在每个“渲染集”的开始处,没有真正的方法将该标志设置为false。谢谢你的帮助:)哦,我明白了…我可以为该网格的滚动事件设置一个事件处理程序。对不起,我真蠢。