|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Цитата:
__________________
...вселенская грусть |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Не вижу смысла отягощать дополнительными функциями класс, заморачиваться на слушание событий типа ADDED_TO_STAGE / REMOVED_FROM_STAGE. Хранить это все еще где-то. Когда задача поставлена предельно просто и ясно: перебрать все объекты на сцене определенного класса. Зачем вот надо придумывать лишнее, когда конкретно в данном случае можно обойтись одной-единственной функцией. А для гибкости, можно класс динамически подсовывать:
function getChildrenOfClass( container:DisplayObjectContainer, classToMatch:Class ):Array { if( !container || !classToMatch ) return null; var outInstances:Array = []; var d:DisplayObject; var i:int = container.numChildren; while( i-- ) { d = container.getChildAt( i ); if( d is classToMatch ) outInstances.push( d ); } return outInstances; } (Код не компилил, мог пропустить какую-нибудь мелкую ошибку). Автор не ставил задачу "максимально быстро", где возможно было бы оправдано пихать лишний функционал в кастомные классы. Приведенный пример максимально гибок / абстрактен и может быть использован независимо от реализации кастомных классов.
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 16.10.2010 в 21:57. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
mayakwd, а что у вас на сцене тысячи объектов валяются, что это может сказаться на переборе, даже рекурсивном? Если да, то постом выше сказано:
Цитата:
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
i.o., не было задачи "перебрать все элементы", была задача "выбрать нужные". А ваш вариант хоть и имеет правл на жизнь, но вданном контексте ИМХО менее "ООПшный", мы же не gc пишем.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Вот статик массив, как раз, есть частное решение. То что я предложил - общее.
TanaTiX Если вам платят за количествно набранных строк и за "только ООПшный код", а не за здравый взгляд на мир вещей, то я понимаю ваше несогласие.
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 16.10.2010 в 22:05. |
|
|||||
Регистрация: Mar 2007
Сообщений: 545
|
Цитата:
Так как условия и цели в разных случаях могут различаться, не бывает универсального кода. |
|
|||||
Цитата:
вырвать из контекста можно что угодно ) |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
В упрощенном виде тест такой: //{ filling var myContainer:Sprite = new Sprite(); i = -1; while( ++i < 100*1000 ) myContainer.addChild( new Shape() ); i = -1; while( ++i < 100*1000 ) myContainer.addChild( new Sprite() ); //} filling var tm01:int = getTimer(); result = getChildrenOfClass( myContainer, Shape ); tm01 = getTimer() - tm01; // tm01: 35ms Как же непродуктивно!...
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 16.10.2010 в 22:39. |
Часовой пояс GMT +4, время: 08:56. |
|
« Предыдущая тема | Следующая тема » |
Теги |
обращение , отображение , экземпляры |
Опции темы | |
Опции просмотра | |
|
|