2

我想在 ArrayCollection 的长度属性上放置一个 eventListener,但我不知道该怎么做。

我想这样做是因为我只想在某个 ArrayCollection 中有一定数量的东西时执行代码。我希望 Flex 等待在下一个对象上执行此代码,直到该长度属性回落到可接受的水平。我想我应该用事件来做这件事,而不是一个 while 循环,它永远在那里喷出 NOOP(我也不知道该怎么做)。

请帮助,并提前感谢。到目前为止,SO 提供了很大的帮助。

4

2 回答 2

3

ArrayCollection 将在其项目更改时调度“collectionChange”事件。因此,您可以在每次分派事件时收听该事件并检查“长度”属性。或者,您也可以通过 BindingUtils.bindSetter() 绑定到长度属性;

于 2009-11-12T14:22:38.553 回答
0

您可以添加一个“collectionChange”事件侦听器并检查 ArrayCollection.length 自上一个事件以来是否发生了变化。(您需要保留 ArrayCollection 长度的静态或实例副本,以进行比较。)

另一个想法是创建自己的lengthChangedEvent,扩展ArrayCollection,覆盖length 属性并在setter 中查找然后调用任何lengthChangedEvent 侦听器。然后在需要侦听事件的任何地方使用扩展的 ArrayCollection 代替基类。这不起作用,因为长度属性是只读的并且没有设置器可以覆盖。您必须覆盖可以从 ArrayCollection 添加或删除项目的每个方法,并在每种情况下测试/调用您的 lengthChangedEvent 侦听器。

于 2009-11-12T14:22:34.883 回答