我想将一个eventListener放在一个ArrayCollection的长度上,但我不知道如何解决这个问题。
我想这样做,因为我只想在某个ArrayCollection中有一定数量的东西时执行代码。我希望Flex等待在下一个对象上执行此代码,直到该length属性回落到可接受的水平。我想我应该用事件而不是在那里永久喷射NOOP的while循环(我不知道该怎么做)。
请帮助,并提前感谢。到目前为止,SO一直是一个很好的帮助。
答案 0 :(得分:3)
ArrayCollection将在其项目更改时调度“collectionChange”事件。因此,您可以在每次调度事件时收听该事件并检查“length”属性。或者,您也可以通过BindingUtils.bindSetter();
绑定到length属性答案 1 :(得分:0)
您可以添加一个'collectionChange'事件侦听器,并检查自上一个事件以来ArrayCollection.length是否已更改。 (您需要保留ArrayCollection长度的静态或实例副本,以进行比较。)
另一个想法是创建自己的lengthChangedEvent,扩展ArrayCollection,覆盖length属性并查找然后在setter中调用任何lengthChangedEvent侦听器。然后使用扩展的ArrayCollection代替基类,只要您需要监听事件。这不起作用,因为length属性是只读的,并且没有要覆盖的setter。您必须覆盖可以在ArrayCollection中添加或删除项目的每个方法,并在每种情况下测试/调用您的lengthChangedEvent侦听器。