|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
обращение сразу ко всем экземплярам определенного класса
Всем привет!
У меня вот такой вопрос: Можно ли, каким-то образом, обратиться сразу ко всем экземплярам определенного класса, которые отображены на сцене? |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Пройтись по каждому экземпляру и проверить, является ли он наследником определенного класса, с помощью оператора is
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Обратиться к экземпляру класса, можно только имея ссылку на него.
Т.е. вам необходимо сделать статическое "хранилище" ссылок на экземпляры этого класса и при создании экземпляра (в конструкторе) заносить ссылку на экземпляр в хранилище. Для оптимизации и возможности удаления объектов, ссылки можно сохранять по ADDED и удалять по REMOVED. |
|
|||||
если я правильно понял то возможно вам будет интересно посмтреть в сторону либо наблюдателя или
компоновщика
__________________
мира и гармонии |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
3p.station, в данной задаче это перегиб
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
можно
например в конструкторе регистрировать экземпляр в каком нибудь статичном массиве. package ru.k0t0vich { import flash.display.Sprite; /** * Регистрируемые спрайты * @author k0t0vich */ public class RegisteredSprite extends Sprite { static private var _instanceArray:Array; public function RegisteredSprite() { super(); // можно регистрировать в конструкоре, но можно и добавлятьудалять по событиям добавления/удаления на сцену. RegisteredSprite.instanceArray.push(this); } static public function get instanceArray():Array { if (!_instanceArray){ _instanceArray = new Array(); } return _instanceArray; } } }
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 16.10.2010 в 18:29. |
|
|||||
люди, какой наблюдатель? Какое регистрить? Все гениальное - просто, а сложное - не нужно.
если объекты расположены вложено - можно вызывать такую функцию рекурсивно |
|
|||||
ну это во первых только если все экземпляры находятся в одном контейнере
во-вторых, смысл перелопачивать дохерища объектов (а их может быть еще больше ), когда можно взять только нужное? Ну и рекурсия тут явно не оправдана
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
Цитата:
Вывод - первый способ реализуем с меньшим гимором и он не может привести к утечкам памяти, в то время как во втором способе, можно "забыть" удалить экземпляр из статик массива, когда объект станет ненужным.
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
i.o., зачем перелопачивать ВСЕ, когда можно иметь список нужного? Нет желания использовать статик - юзаем сингл. А если соответствующему классу (экземпляру) при добавлении на сцену прописать автоматическое добавление в массив (напр. метод register), а удалять другим методом (к примеру destroy), удаляя его при этом из соответствующего массива. Думаю что это более привлекательное решение.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
Часовой пояс GMT +4, время: 10:33. |
|
« Предыдущая тема | Следующая тема » |
Теги |
обращение , отображение , экземпляры |
Опции темы | |
Опции просмотра | |
|
|