![]() |
AIR и 2 класса (MovieClip, NativeWindow)
Имеетсяч приложение на air. Есть главный класс Main, расширяющий MovieClip, и есть класс ExportWindow, расширяющий NativeWindow. Задача в классе ExportWindow вызвать метод из Main. Додумался в конструкторе передавать параметр класс, от куда будет браться ссылка:
Код AS3:
|
например, главный класс можно сделать синглтоном
http://gskinner.com/blog/archives/20...ingletons.html http://garbage-collector.ru/2007/10/...nscript_3.html |
По моему не лучшее решение
|
не могу сказать, насколько хорошо это решение, не зная структуру вашего проекта.
еще можно сделать метод статичным или передавать аргументом непосредственно метод, который нужно вызвать. также, вы можете отправлять из окна событие и слушать его в главном классе. |
В Main имеется функция закрывающая все окна и само собой приложение
Код AS3:
Код AS3:
|
К чему вы этот код привели?
Есть какой-то экземпляр класса Main Есть какое-то окно ExportWindow 1. Если есть уверенность, что ситуации, когда main не существует, а ExportWindow существует быть не может - можно передать в конструкторе, не вижу здесь ничего некрасисовго 2. Если main может отсутствовать - нужен третий объект, владелец этого main, и этого владельца передаём в конструктор. Можно слать события при появляении main у владельца, если ExportWindow надо на это реагировать (подняли окно - подписались, опустили - отписались) 3. Ещё можно при создании main проверять, существует ли ExportWindow (а если он не один... весело будет) и присваивать exportWindow.main = main, если существует. А если создаем ExportWindow, тоже проверять существует ли main и присваивать. Вобщем, метод - не фонтан. 4. Сделать Main синглтоном. Получаем что-то среднее между 1-м и 2-м вариантом, только лишаемся возможности контроля над временем создания этого Main. Плюс этот Main светит глобальной точкой доступа на всё приложение и не даёт создать свой второй экземпляр. Оно нам надо? 5. Фантазия не имеет границ, можно моного всего придумать с событиями, шиной событий, регистрами объектов, IoC-контейнерами, но, думаю, стоит остановиться. И да, можно вообще отказаться от обращения к Main из ExportWindow (во многих случаях так и нужно сделать) и слать из ExportWindow события (баблингом или напрямую слушать - это как удобнее будет) |
Ну и зачем вам передавать ссылку на Main? Это действительно выглядит плохо. Передайте ссылку на функцию Main.closeApplication, ведь нужна только она.
|
1. Диспачте событие из ExportWindow.
2. Ловите его в классе Main. Зачем все усложнять?:) |
Цитата:
|
Пример:
Код AS3:
|
| Часовой пояс GMT +4, время: 01:51. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.