У меня странное поведение при загрузке между доменами.Мне нужно предоставить загрузочному SWF-файлу доступ к классам и методам загруженного SWF-файла в разных доменах, но, несмотря на все мои настройки applicationDomain и междоменные настройки, я не могу преобразовать его в пригодный для использования тип в разных доменах, но он работает идеальноdomain.
Сценарий:
Приложение в домене A загружает скин из домена B (фактически вся часть массивной доменной структуры (test.domain.co.uk, assets.domain.co.uk и т. д.), но для целей Flash они различны).В настоящее время некоторые файлы находятся в тестовой среде и пройдут через несколько сред, прежде чем они будут запущены, поэтому я сохраняю все вызовы безопасности относительно свободными.Повсюду есть файлы crossdomain.xml.
код загрузки:
_skinLoader = new Loader();
addChild(_skinLoader);
var context:LoaderContext = new LoaderContext();
context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
_skinLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, skinError, false, 0, true);
_skinLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, skinLoaded);
var skinurl:String = "http://www.domainB/skins/skin.swf";
var request : URLRequest = new URLRequest(skinurl);
_skinLoader.load(request, context);
ПОЛНЫЙ код события:
onSkinLoaded(e:Event):void{
addChild(_skinLoader);
_skin = e.currentTarget.content as ISkin;
trace("SHELL: Skin loaded:"+_skin); //======== traces out null when x-domain but traces out[object SkinObject] on the same domain or in the IDE
trace("SHELL: Skin target:"+e.currentTarget.content); //===== traces out [object SkinObject] on both
...............
}
Таким образом, он работает, когда обложка находится в том же домене, что и приложение оболочки, но не когда они разделены.Как вы можете заметить из приведенного выше кода, скин реализует ISkin, расширяет и абстрагирует класс ASkin;Чтобы иметь дело с безопасностью, у меня есть следующее как конструктор класса скина (который является базовым классом fla).
public function SkinObject(){
Security.allowDomain(this.root.loaderInfo.loaderURL);
super();
}
Другая информация:
- Следы в скине класса конструктора скина
- Когда скин находится в том же домене, если я проверяю
(e.currentTarget.content is ISkin)
Я получаю истину, когда на отдельных доменах я получаю ложь - Естьнет событий безопасности
- Я попытался установить контекст загрузчика для нового ApplicationDomain.