![]() |
Обращение к загруженному SWF
Здравствуйте.
Я загрузил SWF на сцену с помощью Loader. В событие Event.COMPLETE добавил его на сцену с помощью addChild. Подскажите пожалуйста как обратиться в загруженному SWF. Например загруженный SWF состоит из нескольких кадров. При нажатие какой то кнопки в главном ролике мне нужно переплеснуть SWF на 1й кадр, при нажатие другой кнопки на 2й и тд. |
В загружаемом swf есть код или только графика?
В флешплеере в целях безопасности для каждого класса исполняемого кода (а классы создаются автоматически даже в случае написания кода во фреймах) присвоено определенное свойство SecurityDomain Может вам информация ниже покажется несколько запутанной, но рекомендую загружать медиаданные с loaderContect ом для текщего домена. А код всех классов используемых в загруженном клипе хранить в основном swf. А именно: 1. СОздаете в родительском приложении файлы классов без привязки графики. (Не забудте оставить где-нибудь в коде ссылки на них, что бы компилятор включил их в swf) 2. Создаете в загружаемом ролике символы в библиотеке и привязывете привязывает в Linkage классы точно с таким же именем как в родительском( при этом положите fla файл в отдельную паку, что бы классы не подхватились из файлов, а компилятор должен ругнуться "не могу найти соответствующих файлов") 3. В родительском приложении загружаете swf с указанием loaderContext applicationDomain.currentDomain Код AS3:
Это вам позволит работать со всем пременными ссылками на экземпляры на сцене как буд-то бы они лежали на сцене в основном классе. Если вам необходимо обращение только на уровне root загруженного ролика, то все это проделаете лишь для одного класса. Более простые на первый взгляд решения на практике оказываются еще запутанней :) Добавлено через 8 минут Да еще в загружемом ролике в PublishingSettings в настройках ActionScript3 необходимо убрать галочку в "Automatically declare stage instances" |
Чего то не работает. Всё ли я правильно сделал?
В загружаемых SWF убрал галочку "Automatically declare stage instances". В главном ролике добавил несколько фрагментов для загрузки SWF. Фрагменты назвал object_lo_1, object_lo_2 и тд. Фаили загружаю так: Код AS3:
Код AS3:
|
Цитата:
И не очень понял что подразумеваете под Цитата:
1. В загружаемом ролике в свойство документа поставить MyLodedApp. 2. А рядом с родительским роликом создать класс MyLodedApp, в котором описать переменные с именами инстансов лежащих на сцене в загружаемом ролике (если хи нет, то не нужно) Код AS3:
ПС. Для случая с кодом в кадрах впринципе можно придумать чуть проще без внешнего файла класса, а используя runtime shared librory, но я давно им не пользовался, поэтому предложу лишь указанное решение :) Добавлено через 26 минут А потом обратиться к загруженному классу следуюущим образом Код AS3:
Вообще, честно говоря, думаю большинству довольно сложно будет сориентироваться, т.к. привыкли к другому стилю програмирования и именования переменных http://sourceforge.net/adobe/flexsdk...20Conventions/ Рекмоендую решить задачу для отдельного пустого проекта без лишнего кода, а потом применить к нему свой код, иначе сложно отделеть решаюмую задачу от других участков |
Цитата:
Поэкспериментировал и получилось прировнять созданный Фрагмент к загруженному фрагменту и в дальнейшем обращается к нему так как будто он был изначально на сцене. то есть в событие Event.COMPLETE прописал следующее: Код AS3:
Код AS3:
|
| Часовой пояс GMT +4, время: 07:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.