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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.04.2012, 17:12
omfg вне форума Посмотреть профиль Отправить личное сообщение для omfg Найти все сообщения от omfg
  № 1  
Ответить с цитированием
omfg

Регистрация: Apr 2011
Сообщений: 10
По умолчанию Вопрос про ApplicationDomain

Возможно ли загрузить внешние swf в текущий домен приложения?
Код AS3:
var currentDomain:ApplicationDomain = ApplicationDomain.currentDomain;
.....
 
var loader:Loader = new Loader();
var url:URLRequest = new URLRequest("someswf");
var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
loader.load(new URLRequest(url), context);
Мне это нужно для того, чтобы, вызывая после загрузки

Код AS3:
this.loaderInfo.applicationDomain.hasDefinition("Some_class_from_loaded_swf")
возвращало true. В таком виде возвращает false. Подскажите, пожалуйста

Старый 01.04.2012, 17:31
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Должно работать в принципе, проверьте, что правильно написаны имена. (Возможно нужно еще и SecurityDomain) это дело темное, его меняли несколько раз, и сами теперь не разберутся, как оно работает... так что методом тыка.
Кроме всег прочего - на iOS такое работать не будет, т.как там байткод другой.
__________________
Hell is the possibility of sanity

Старый 01.04.2012, 23:25
omfg вне форума Посмотреть профиль Отправить личное сообщение для omfg Найти все сообщения от omfg
  № 3  
Ответить с цитированием
omfg

Регистрация: Apr 2011
Сообщений: 10
Что-то совсем ничего не выходит. Может я что-то не так делаю? Вот код:

Код AS3:
..
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest("test.swf"), new LoaderContext(false, ApplicationDomain.currentDomain));
...
 
 
private function completeHandler(event:Event):void {
   trace("======");
   trace(ApplicationDomain.currentDomain.hasDefinition("TestMC")); // output false
   trace("======");
 
   trace("+++++++++");
   trace((event.currentTarget as LoaderInfo).applicationDomain.hasDefinition("TestMC")); // output true
   trace("+++++++++");
}

Старый 02.04.2012, 00:41
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 4  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Вам же wvxvw уже написал про SecurityDomain. В вашем коде я его упоминаний не вижу.

В документации по LoaderContext.applicationDomain есть фраза "If you are loading a SWF file from another domain, and allowing it to be placed in a separate security domain, then you cannot control the choice of application domain into which the loaded SWF file is placed; and if you have specified a choice of application domain, it will be ignored". В документации по LoaderContext.securityDomain читаем "You can allow the loaded SWF file to be placed in its "natural" security domain, which is different from that of the loading SWF file; this is the default. ".

Судя по вашему выводу, вы грузите файл из другого securityDomain. Он автоматически попадает в новый securityDomain (так как вы не просили грузить его к себе), а там речи о каком-либо applicationDomain не может быть (они работают строго в пределах одного securityDomain).

Старый 02.04.2012, 11:32
omfg вне форума Посмотреть профиль Отправить личное сообщение для omfg Найти все сообщения от omfg
  № 5  
Ответить с цитированием
omfg

Регистрация: Apr 2011
Сообщений: 10
maxkar, это Вы всё правильно написали про SecurityDomain, но дело в том, что загрузка происходит локально. А для локальной загрузки LoaderContext не поддерживает свойство SecurityDomain (и я так понимаю, что все данные помещаются в один SecurityDomain). Я сейчас создал тестовый проект, в котором отобразил предыдущий свой код. Всё равно ничего не работает.
Какая-то мука с этими доменами! Может кто встречался с подобной проблемой?

Старый 02.04.2012, 12:37
carrotoff вне форума Посмотреть профиль Отправить личное сообщение для carrotoff Найти все сообщения от carrotoff
  № 6  
Ответить с цитированием
carrotoff
 
Аватар для carrotoff

Регистрация: May 2010
Сообщений: 543
Была похожая проблема. Большая вероятность того, что вы загружаете в файл не из той же папки.
Цитата:
и я так понимаю, что все данные помещаются в один SecurityDomain
Для локальных файлов тоже существуют свои домены безопасности. Если загрузчик и загружаемый фал находятся в одной директории, то они окажутся в одном домене безопасности, если в разных - то, по умолчанию, загружаемый файл попадет в новый домен безопасности. Чтобы он попал в текущий домен безопасности, необходимо в менеджере настроек флэш плеера указать список доверенных директорий. Или отредактировать файл конфигурации FP, который у меня (WIn7) находится здесь:
C:\Users\[user_name]\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust

Для вашей операционки - гуглите
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)

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

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

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


 


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


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