![]() |
ApplicationDomain. Во флэшку подгружаются две других. Как разделить одинаковые имена.
Есть флешка "лоадер". Она подгружает в себя две других (skin1 и skin2);
Во флешках skin есть мувики в либе с одинаковыми именами классов (но выглядят они по-разному). Флэшки skin гружу так: skin1 Код:
this.skinLoader = new Loader();Код:
this.skinLoader_x2 = new Loader();Код:
private function onLoadComplete(e:Event):void {Код:
//1Если в skin1 нет мувика с таким именем, то только тогда добавляется из skin2 |
Эта строка говорит сама за себя:
Код:
new LoaderContext(false, ApplicationDomain.currentDomain); |
Ну так и задумано, чтобы слить аппликэйшен домены лоадера и скин1,
а аппликэшен домен скин2 оставить отдельно. Тем не менее скин1 и скин2 грузятся в разные аппликейшен домены. То что они разные проверяю так: Создаю мувики с уникальными именами и проверяю через hasDefinition() В том и вопрос что я обращаюсь к конструктору класса с одинаковыми именами и чтобы различить эти классы я разложил их по разным аппликэйшн доменам. Но этот подход не работает как ожидалось: Я явно указываю конкретный аппликэшен домен и имя класса в нем, а флэш попадает на класс с таким же именем но в другом аппликейшен домене. В хелпе написано что вообще возможна ситуация с перекрыванием без сообщения об ошибке, но это невозможно когда обращение происходит явно к конкретному аппликэшен домену через getDefinition() Вечером постараюсь выложить пример, чтобы было понятнее о чем я говорю |
Цитата:
Однажды определенный класс в одном домене, не будет переопределен другим классом из флешки, которая подгружается в тот же домен. Чтобы добиться требуемого, надо в контексте указать новый домен, а не текущий. |
Ага.
Моя ошибка что я думаю что гружу в разные домены Код:
this.skinLoader_x2 = new Loader(); |
Потому что parentDomain указан. Объявленный класс в родительском домене тоже не переопределяется.
|
Код:
this.skinLoader_x2 = new Loader();*Пойду в аптеку... за ядом* |
sameDomain относится не к ApplicationDomain, а к домену, с которого загружена флешка. В данном случае, у обеих localhost.
|
Ок, с sameDomain погорячился, но вот это:
Код:
trace((this.applicationDomain == this.applicationDomain_x2)); // true |
А что есть this.applicationDomain?
|
| Часовой пояс GMT +4, время: 23:07. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.