AS3 - Как я могу отправить Event.CHANGE из массива / вектора? - PullRequest
0 голосов
/ 30 сентября 2011

Я бы хотел создать подкласс Array или Vector для отправки и Event.CHANGE при изменении значения любого элемента.

Как мне поступить?

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Как насчет использования ArrayCollection и прослушивания CollectionEvent (mx.events.CollectionEvent.COLLECTION_CHANGE)


    /**
     *  Dispatched when the ICollectionView has been updated in some way.
     *
     *  @eventType mx.events.CollectionEvent.COLLECTION_CHANGE
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    [Event(name="collectionChange", type="mx.events.CollectionEvent")]

0 голосов
/ 30 сентября 2011

Существует два способа приблизиться к нему, если вы хотите создать свою собственную коллекцию: 1) Расширьте класс Array и используйте метод, такой как updata (index: int, value: *), чтобы обновить в нем данные вместо методов доступа к массиву (myArray [i] = newValue). И в методе обновления вы можете отправить событие изменения. Это может сделать ваш код менее лаконичным.

2) Расширить Proxy и переопределить методы setProperty и getProperty в пространстве имен flash_proxy. Это позволит вам использовать операторы доступа к массиву ([ключ]), недостаток - прокси работает медленно.

Существует несколько готовых коллекций с открытым исходным кодом на основе прокси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...