Показать сообщение отдельно
Старый 06.04.2013, 18:06
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 2  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
В загружаемом swf есть код или только графика?


В флешплеере в целях безопасности для каждого класса исполняемого кода (а классы создаются автоматически даже в случае написания кода во фреймах) присвоено определенное свойство SecurityDomain


Может вам информация ниже покажется несколько запутанной, но рекомендую загружать медиаданные с loaderContect ом для текщего домена. А код всех классов используемых в загруженном клипе хранить в основном swf.

А именно:

1. СОздаете в родительском приложении файлы классов без привязки графики. (Не забудте оставить где-нибудь в коде ссылки на них, что бы компилятор включил их в swf)
2. Создаете в загружаемом ролике символы в библиотеке и привязывете привязывает в Linkage классы точно с таким же именем как в родительском( при этом положите fla файл в отдельную паку, что бы классы не подхватились из файлов, а компилятор должен ругнуться "не могу найти соответствующих файлов")
3. В родительском приложении загружаете swf с указанием loaderContext applicationDomain.currentDomain
Код AS3:
loader =  new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler);
loaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
loader.load(request, loaderContext);
В этом случае все классы из родительского swf заменят одноименные классы в загруженном клипе, но при этом они подхватят всю графику из загруженного

Это вам позволит работать со всем пременными ссылками на экземпляры на сцене как буд-то бы они лежали на сцене в основном классе.

Если вам необходимо обращение только на уровне root загруженного ролика, то все это проделаете лишь для одного класса.
Более простые на первый взгляд решения на практике оказываются еще запутанней

Добавлено через 8 минут
Да еще в загружемом ролике в PublishingSettings в настройках ActionScript3 необходимо убрать галочку в "Automatically declare stage instances"
__________________
...


Последний раз редактировалось Александр Мостовой; 06.04.2013 в 18:41.