Показать сообщение отдельно
Старый 18.05.2011, 13:55
Annihilator вне форума Посмотреть профиль Отправить личное сообщение для Annihilator Найти все сообщения от Annihilator
  № 1  
Ответить с цитированием
Annihilator
 
Аватар для Annihilator

Регистрация: Sep 2005
Адрес: Kiev
Сообщений: 73
Отправить сообщение для Annihilator с помощью ICQ
Question Не работает getDefinition() в файлах с другого домена

Помогите, пожалуйста, решить проблему с видимостью классов и кросс-скриптингом в разных доменах.
В общем ситуация такая: в главное приложение Main.swf (в домене siteA.com) загружаются swf-ки с разных доменов. С локального домена загружаются библиотеки компонентов и скинов, при чем в ApplicationDomain.currentDomain, т.е.:
Код AS3:
context = new LoaderContext(false, ApplicationDomain.currentDomain);
Loader.load(new URLRequest("http://siteA.com/style.swf"), context);
что бы их могли использовать все модули.
А каждый модуль загружается в свой домен, т.е. без указания context-а, чтобы не пересекались их внутренние классы и потом они нормально выгружались из памяти.

Так вот проблема в том, что если swf-ка загружена, допустим, с домена "siteB.com", то при обращении в ней:
Код AS3:
var objClass:Class = ApplicationDomain.currentDomain.getDefinition('com.style.BigButton') as Class;
var MyButton:MovieClip = new objClass();
выдается ошибка "ReferenceError: Error #1065: Переменная BigButton не определена". А для флешек с домена "siteA.com" всё нормально.

На всех доменах есть файл "crossdomain.xml" со всеми правами доступа, для всех флешек прописано "Security.allowDomain('*')" но не помогает все равно.

Что делать?