Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.10.2010, 15:07
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 1  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
По умолчанию обращение сразу ко всем экземплярам определенного класса

Всем привет!

У меня вот такой вопрос:
Можно ли, каким-то образом, обратиться сразу ко всем экземплярам определенного класса, которые отображены на сцене?

Старый 16.10.2010, 15:40
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Пройтись по каждому экземпляру и проверить, является ли он наследником определенного класса, с помощью оператора is

Старый 16.10.2010, 15:41
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 3  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Обратиться к экземпляру класса, можно только имея ссылку на него.
Т.е. вам необходимо сделать статическое "хранилище" ссылок на экземпляры этого класса и при создании экземпляра (в конструкторе) заносить ссылку на экземпляр в хранилище. Для оптимизации и возможности удаления объектов, ссылки можно сохранять по ADDED и удалять по REMOVED.

Старый 16.10.2010, 15:48
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 4  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
если я правильно понял то возможно вам будет интересно посмтреть в сторону либо наблюдателя или
компоновщика
__________________
мира и гармонии

Старый 16.10.2010, 16:00
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 5  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
3p.station, в данной задаче это перегиб

Старый 16.10.2010, 18:25
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
можно
например в конструкторе регистрировать экземпляр в каком нибудь статичном массиве.
Код AS3:
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; 
        }
 
    }
 
}
UPD 2alatar - написал не увидев твоего сообщения..
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 16.10.2010 в 18:29.
Старый 16.10.2010, 18:56
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 7  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
люди, какой наблюдатель? Какое регистрить? Все гениальное - просто, а сложное - не нужно.
Код AS3:
for(var i=0; i<numChildren;i++)
if ( !(getChildAt(i) is MyClass) ) continue;
else{обработать getChildAt(i) }
если объекты расположены вложено - можно вызывать такую функцию рекурсивно

Старый 16.10.2010, 19:08
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 8  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
ну это во первых только если все экземпляры находятся в одном контейнере
во-вторых, смысл перелопачивать дохерища объектов (а их может быть еще больше ), когда можно взять только нужное?
Ну и рекурсия тут явно не оправдана
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 16.10.2010, 19:24
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 9  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
во-вторых, смысл перелопачивать дохерища объектов (а их может быть еще больше ), когда можно взять только нужное?
TanaTiX, читаем вопрос внимательно:
Цитата:
Можно ли, каким-то образом, обратиться сразу ко всем экземплярам определенного класса, которые отображены на сцене?
Перелопачивать в любом случае придется - в первом по всем детям на сцене проходить и смотреть их класс. Второй - брать (если реализовать как у Котяры через статик массив) все экземпляры класса и смотреть, являются ли они детьми сцены.
Вывод - первый способ реализуем с меньшим гимором и он не может привести к утечкам памяти, в то время как во втором способе, можно "забыть" удалить экземпляр из статик массива, когда объект станет ненужным.

Старый 16.10.2010, 20:30
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 10  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
i.o., зачем перелопачивать ВСЕ, когда можно иметь список нужного? Нет желания использовать статик - юзаем сингл. А если соответствующему классу (экземпляру) при добавлении на сцену прописать автоматическое добавление в массив (напр. метод register), а удалять другим методом (к примеру destroy), удаляя его при этом из соответствующего массива. Думаю что это более привлекательное решение.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
обращение , отображение , экземпляры
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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