![]() |
обращение сразу ко всем экземплярам определенного класса
Всем привет!
У меня вот такой вопрос: Можно ли, каким-то образом, обратиться сразу ко всем экземплярам определенного класса, которые отображены на сцене? |
Пройтись по каждому экземпляру и проверить, является ли он наследником определенного класса, с помощью оператора is
|
Обратиться к экземпляру класса, можно только имея ссылку на него.
Т.е. вам необходимо сделать статическое "хранилище" ссылок на экземпляры этого класса и при создании экземпляра (в конструкторе) заносить ссылку на экземпляр в хранилище. Для оптимизации и возможности удаления объектов, ссылки можно сохранять по ADDED и удалять по REMOVED. |
если я правильно понял то возможно вам будет интересно посмтреть в сторону либо наблюдателя или
компоновщика |
3p.station, в данной задаче это перегиб
|
можно
например в конструкторе регистрировать экземпляр в каком нибудь статичном массиве. Код AS3:
|
люди, какой наблюдатель? Какое регистрить? Все гениальное - просто, а сложное - не нужно.
Код AS3:
|
ну это во первых только если все экземпляры находятся в одном контейнере
во-вторых, смысл перелопачивать дохерища объектов (а их может быть еще больше:) ), когда можно взять только нужное? Ну и рекурсия тут явно не оправдана |
Цитата:
Цитата:
Вывод - первый способ реализуем с меньшим гимором и он не может привести к утечкам памяти, в то время как во втором способе, можно "забыть" удалить экземпляр из статик массива, когда объект станет ненужным. |
i.o., зачем перелопачивать ВСЕ, когда можно иметь список нужного? Нет желания использовать статик - юзаем сингл. А если соответствующему классу (экземпляру) при добавлении на сцену прописать автоматическое добавление в массив (напр. метод register), а удалять другим методом (к примеру destroy), удаляя его при этом из соответствующего массива. Думаю что это более привлекательное решение.
|
| Часовой пояс GMT +4, время: 04:12. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.