4. [junior] ApplicationDomain

junior – серия статей для начинающих ActionScript-разработчиков.
Все статьи серии:
http://flashpress.ru/blog/category/junior/

ApplicationDomain – если говорить простым языком, это хранилище классов в исполняемом приложении. Когда вы запускаете главную флешку, все классы из этой флешки помещаются в текущий домен(ApplicationDomain.currentDomain). Классы из загружаемых флешек могут быть загружены как в текущий домен, так и в новый в зависимости от параметра context:LoaderContext в методе Loader.load.

Где может пригодится ApplicationDomain?

Рассмотрим пример: Приложение состоит из двух флешек: app.swf – основная флешка; module.swf – модуль который загружается в app.swf. Флешку app разрабатываете вы, а module – сторонние разработчики. Если в app и в module имеются классы с одинаковыми пакетами и именами, то может возникнуть конфликт. Что бы флешка module гарантировано использовала только свои классы, её нужно загрузить в новом домене( new ApplicationDomain() ).

Другой пример: В вашем приложение app.swf загружает флешку module.swf. Флешка module была разработана сторонними разработчиками, у вас нет исходников этой флешки и возникла острая нужда подправить один класс из этой флешки. Для решения этой проблемы необходимо во флешке app создать класс с таким же пакетом и именем, и загрузить module в текущем домене ( ApplicationDomain.currentDomain ). В этом случае module будет использовать класс из app.

Попробуем разобрать как это все работает на практике

Флешка app.swf имеет класс app.as, module.swf содержит module.as и обе флешки содержат класс Common.as.

module.swf->Common.as:

module.swf->module.as:

app.swf->Common.as:

Загрузка флешки в новом домене.
app.swf->app.as:

Загрузка флешек в текущем домене.
app.swf->app.as:

К текущему домену можно обратится также через свойство stage:

Скачать исходники примера можно здесь, в архиве лежат два каталога с проектами app и module.

Связанные ссылки:

Да прeбудет с вами Flash.
Serious Sam
Эту статью прочитали 1131 раз

Возникли вопросы по статье? Не стесняйтесь спрашивать в комментариях или любым другим способом на странице Контакты .

Присоединяйтесь к нам в социальных сетях: ВКонтакте , Twitter и Facebook
Понравилась статья? Буду благодарен если вы поделитесь ссылкой с друзьями:


Комментарии ВКонтакте:




Комментарии Facebook:




Комментарии WordPress: