Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отследить добавление/удаление элементов вектора (http://www.flasher.ru/forum/showthread.php?t=215526)

Appleman 09.05.2018 00:26

Отследить добавление/удаление элементов вектора
 
Друзья!

Имею вектор. Хочу, чтобы изменение его элементов (любым способом) вызывало событие. Как это можно наиболее бескровно реализовать?

Спасибо.

Tails 09.05.2018 12:42

Написать класс - обёртку. Композиция будет лучше наследования.

СлаваRa 09.05.2018 13:15

https://github.com/SlavaRa/blooddy/b...tDispatcher.as

@Tails, про композицию напомнило:
- vim лучше чем любая IDE!
- чем лучше?
- чем любая IDE

DEVORON 09.05.2018 15:29

Еще, как вариант, можете попробовать VectorListModel из пакета AsWing. Но там работа идёт с массивом

Zebestov 09.05.2018 23:54

Appleman, а ты уверен, что хочешь именно событие по каждому чиху, а не флаг, который когда дело доходит до обработки вектора, сообщает, что с момента последнего запроса вектор 1 или 100500 раз поменялся? Как правило логика может щелкать данными существенно чаще, чем эти данные нужно, например, отображать.

Appleman 10.05.2018 11:16

СлаваRa, спасибо, круто!

Zebestov, да я сам ещё до конца не решил, чего на самом деле хочу :) Это вектор основных персонажей в Модели. С одной стороны, его не часто придётся дёргать по части изменения, но постоянно и многократно перебирать методом for each.

Нужно, чтобы добавление либо удаление элемента не оставалось незамеченным, но при этом не терялась способность иметь удобный доступ к элементам и перебирать их. Пока в Модели написал методы addCharacter2Pool(ch: Character) и removeCharacterFromPool(ch: Character). Но, боюсь, сам же забуду о необходимости пользоваться данными методами и зафигачу _characterPool.push(character) и буду рвать на жопе волосы, почему всё перестало работать нормально...

caseyryan 10.05.2018 13:01

А тебе что вообще нужно делать с этими массивами? Нужен доступ по индексу к элементам? Могут ли элементы в массиве повторяться?
Подумай над этим. Ведь есть же другие типы коллекций. Например хэшкарты, в которых отсутствует индексатор, но зато элементы находятся за константное время O(1), без перебора. В as3 Dictionary и Object работают как хешкарты. Но в них ключи уникальны.

Zebestov 10.05.2018 13:40

Цитата:

Сообщение от Appleman (Сообщение 1205180)
Но, боюсь, сам же забуду о необходимости пользоваться данными методами и зафигачу _characterPool.push(character)...

А ты не забывай )) бо все ты правильно сделал.

Tails 11.05.2018 02:08

Цитата:

Сообщение от СлаваRa (Сообщение 1205167)
@Tails, про композицию напомнило:
- vim лучше чем любая IDE!
- чем лучше?
- чем любая IDE

Да, забавно получилось) Но я так и подумал, что человеку нужна конструкция более высокого уровня (Список игровых объектов), а не просто низкоуровневый вектор с уведомлением. Поэтому.


Часовой пояс GMT +4, время: 01:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.