Просмотр свойства длины ArrayCollection в AS3 / Flex - PullRequest
2 голосов
/ 12 ноября 2009

Я хотел бы поместить eventListener в свойство длины ArrayCollection, но я не знаю, как это сделать.

Я хочу сделать это, потому что я хочу, чтобы код выполнялся только тогда, когда определенное количество вещей находится в определенной коллекции ArrayCollection. Я хочу, чтобы Flex ожидал выполнения этого кода над следующим объектом, пока это свойство длины не опустится до приемлемого уровня. Я думаю, что я должен делать это с событиями, а не с циклом while, который сидит там, извергая NOOP навсегда (что я тоже не знаю, как это сделать).

Пожалуйста, помогите, и спасибо заранее. До сих пор была большая помощь.

Ответы [ 2 ]

3 голосов
/ 12 ноября 2009

ArrayCollection отправит событие collectionChange, когда его элементы изменились. Таким образом, вы можете прослушивать это событие и проверять свойство «length» каждый раз, когда событие отправляется. В качестве альтернативы вы также можете просто привязать свойство length с помощью BindingUtils.bindSetter ();

0 голосов
/ 12 ноября 2009

Вы можете просто добавить прослушиватель события collectionChange и проверить, изменился ли ArrayCollection.length со времени предыдущего события. (Для сравнения вам потребуется сохранить статическую или экземплярную копию длины ArrayCollection.)

Другая мысль состоит в том, чтобы создать свой собственный lengthChangedEvent, расширить ArrayCollection, переопределить свойство length и найти, а затем вызвать любых слушателей lengthChangedEvent в установщике. Затем используйте расширенную коллекцию ArrayCollection вместо базового класса везде, где вам нужно прослушать событие. Это не будет работать, потому что свойство length доступно только для чтения и нет установщика для переопределения. Вам придется переопределить каждый метод, который может добавлять или удалять элементы из ArrayCollection, и тестировать / вызывать ваш слушатель lengthChangedEvent в каждом случае.

...