Отследить добавление/удаление элементов вектора
Друзья!
Имею вектор. Хочу, чтобы изменение его элементов (любым способом) вызывало событие. Как это можно наиболее бескровно реализовать? Спасибо. |
Написать класс - обёртку. Композиция будет лучше наследования.
|
https://github.com/SlavaRa/blooddy/b...tDispatcher.as
@Tails, про композицию напомнило: - vim лучше чем любая IDE! - чем лучше? - чем любая IDE |
Еще, как вариант, можете попробовать VectorListModel из пакета AsWing. Но там работа идёт с массивом
|
Appleman, а ты уверен, что хочешь именно событие по каждому чиху, а не флаг, который когда дело доходит до обработки вектора, сообщает, что с момента последнего запроса вектор 1 или 100500 раз поменялся? Как правило логика может щелкать данными существенно чаще, чем эти данные нужно, например, отображать.
|
СлаваRa, спасибо, круто!
Zebestov, да я сам ещё до конца не решил, чего на самом деле хочу :) Это вектор основных персонажей в Модели. С одной стороны, его не часто придётся дёргать по части изменения, но постоянно и многократно перебирать методом for each. Нужно, чтобы добавление либо удаление элемента не оставалось незамеченным, но при этом не терялась способность иметь удобный доступ к элементам и перебирать их. Пока в Модели написал методы addCharacter2Pool(ch: Character) и removeCharacterFromPool(ch: Character). Но, боюсь, сам же забуду о необходимости пользоваться данными методами и зафигачу _characterPool.push(character) и буду рвать на жопе волосы, почему всё перестало работать нормально... |
А тебе что вообще нужно делать с этими массивами? Нужен доступ по индексу к элементам? Могут ли элементы в массиве повторяться?
Подумай над этим. Ведь есть же другие типы коллекций. Например хэшкарты, в которых отсутствует индексатор, но зато элементы находятся за константное время O(1), без перебора. В as3 Dictionary и Object работают как хешкарты. Но в них ключи уникальны. |
Цитата:
|
Цитата:
|
Часовой пояс GMT +4, время: 01:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.