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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Question И опять про передачу переменных.

Здравствуйте други.
Объясню суть задачи. Есть 3 класса:
  1. Ядро - отвечает за работу всего приложения
  2. СписокЗагрузки - класс отвечающий за запуск и добавление объектов к родительскому элементу
  3. Настройщик - настраивает подгружаемый элемент
В некий момент времени объект на сцене (Объект А) генерирует событие, хочу загрузить список элементов. Событие ловит Ядро(Я) и генерирует список загрузки(СЗ), куда передается в качестве ссылки объект инициировавший событие и собственно сам список настроек для загрузки элементов. Плюс в СЗ передается область Rectangle определяющая границы в пределах которых можно размещать объекты(для первого раза она равна области stage). После загрузки очередного элемента СЗ создает новый объект Настройщик(Н), в который передается ссылка на загруженный объект, параметры его настройки и область размещения. СЗ добавляет объект на сцену и передает управление Н который позиционирует объект внутри области размещения и может эту область изменять (объект по настройкам вполне может ее уменьшить заняв свою площадь). Когда настройка объекта завершена Н уведомляет об этом СЗ и тот обновляет у себя область размещения, чтобы передать эту область следующему объекту.
Самое интересное начинается когда один за загруженных СЗ объектов (назовем его объект Б) тоже уведомляет о том, что ему надо создать свой список загрузки. В этот момент Я получает уведомление о наступлении события и генерирует новый СЗ(2) для загрузки второго списка объектов но уже для Объекта Б. СЗ для Объекта А переходит в режим ожидания пока не будут загружены все объекты по СЗ(2). И вот в этот момент необходимо чтобы область размещения переданная в настройщик объекта Б стала доступна для СЗ(2).
Сами загружаемые объекты информацию о параметрах настройки не хранят, и передавать в них ее не хотелось бы, т.е. создавать свои расширенные классы для клипов и картинок не рассматривается как вариант.
Можно было бы генерировать СЗ непосредственно из Н, но не хочется злоупотреблять вложенными вызовами, боюсь стек может кончиться, на сколько я помню есть ограничение по количеству вложенных вызовов в стеке.
Какие вижу варианты передачи области размещения:
  • При генерации события пока оно поднимается до ядра прехватывать его и задавать через дополнительный параметр область размещения (наподобие KeyCode как в KeyboardEvent)
  • создать хэш таблицу где хранить связь объект - область размещения.
Ядро получив уведомление генерирует СЗ задав область размещения переданную одним из способов.
Оба варианта кажутся какими-то топорными, может кто подскажет нечто более изящное?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ