![]() |
как передать в загруженный swf данные
Приветсвую!
Есть preloader.swf и его класc Preloader в котором происходит загрузка main.swf в мувик ALL. Также в Preloader загружается XML. Сложность в том что main.swf загружается через дополнительный класс MainPrel (в котором я отслеживаю загрузку swf, визуально полосочкой ее отображаю, затем добавляю swf в указанное место и убиваю прелодер) Все работает отлично поэтому даю лишь кусочек кода: Код AS3:
main.swf имеет также свой класс Main.as из которого диспатчером не могу достучаться до главного Preloader. 1. Вопрос в том как потом (после добавления в указанное место) обратиться к нему из Preloader и передать в main.swf - XML ? 2. Возможно ли вообще достучатсья диспатчером в из main.swf в preloader.swf ? |
1. Видимо в ДокументКлассе подгружаемой swf надо сделать сеттер, принимающий XML.
2. Что такое "достучаться диспатчером"? Не можете подписаться на событие? Так объясните, что за событие, когда оно диспатчится, откуда (не из конструктора, я надеюсь?) Вы можете только после загрузки swf подписаться из прелоадера на какое-то событие от ДокументКласса этой swf. Добавлено через 1 минуту Цитата:
|
this.parent.removeChild(this);
по другому почемуто работать не хотел ((( Preloader: Код AS3:
Код AS3:
видимо путаюсь еще изза того что есть сами SWF на физическом уровне - которые нужно загружать и классы которые ими управляют Добавлено через 4 минуты приношу извинения за кривизну кода (только начал переходить с AS2 и очень сложно все дается) если можно не акцентируйте внимание на мелочах и просто укажите как передать XML в main или как сделать так чтоб с main'a можно было к нему обращаться? |
Цитата:
Во-вторых, Вы постоянно упоминаете некий "мейн", но что это такое — ни слова. И самое главное (а может это и есть "во-вторых") — Вы задаете вопрос о передаче данных в загружаемую swf, а код приводите чего угодно, но только не этой swf. Цитата:
Кроме того, не вижу у Вас подписки на событие окончания загрузки (то, что Вы не подписываетесь на возможные ошибки загрузки это, в общем-то, Ваше личное дело). Вы решаете это математикой. Не надо. Есть событие Event.COMPLETE, говорящее об окончании загрузки с точностью до последнего байта :) После этого контент Лоадера и есть мейн-класс загруженной свфки. Приводите контент к правильному типу (этот самый мейн-класс) и обращайтесь к его свойствам и методам (отдавайте XML). |
с орфографией полностью согласен (это придет)
main впринципе на важен - так как он может быть даже пустой геттер и сеттер понимаю - но только на уровне добавления классов при загрузке swf в мувик ALL сложно понять как к сеттеру обратиться (присал сеттер но до него не достучаться в swf) вот сам загрузчик swf Код AS3:
ну а впрочем - рас я так уж не правильно поступаю ((( как мне в дальнейшем (не засовываю все до кучи в одну флешку) красиво разбить все на swf файлы (содержащие нужные графические иструменты в библиотеке) не просто их классы импортировать и добавлять на сцену но и отслеживать степень загрузки? что вообще раньше надо делать (как про курицу и яйцо) импортировать и добавлять классы на сцену(которыя я так понимаю потянут за собой автоматом swf файлы ) или загружать swf файлы в которых библиотечные объекты будут автоматом находить нужные классы ? опятьже извиняюсь за дебильную постановку вопроса - но абсолютно нескем посоветоваться и самостоятельное изуение очень сложно дается ( |
Как это не с кем? Нас тут много, советчиков)))
Все нормально с свф-файлами. Обычное дело хранить часть функционала в отдельных, подгружаемых по мере надобности, файлах (давайте для краткости будем звать их плагинами). То есть имеем основной свф-файл приложения и дополнительные файлы, расширяющие функционал. Дополнительные локации для игры. Дополнительные шрифты для "открыток". Дополнительные кисточки для рисовалок. Всё это плагины, которые могут понадобиться за "время жизни" приложения, а могут и не понадобиться. Поскольку имеют приличный вес, нет смысла запихивать все это в один файл. Подгружаем по мере надобности. Далее. Чтобы классы основной флэшки могли вытащить ресурсы из плагинов, или обратиться к их методам и свойствам, основная флэшка должна знать, как это сделать. То есть должна знать названия этих методов и свойств. Для этого она должна знать классы или Интерфейсы документ-классов этих плагинов. Это понятно? Вот Ваши слова: Цитата:
Вы представляли себе это как-то иначе? |
Абсолютно с вами согласен!
Всё должно быть расставлено по полочкам. Про пустой "майн" погорячился (так как там уже многое происходит и просто никак не мог получить xml). Но всё же если не писать огромных примеров, как мне получить в main из preloader xml? Я бы конечно мог сразу в майн xml загрузить - но хочется некой универсальности а также понять как всё работает чтоб в дальнейшем передавать нужные кусочки xml в другие подгруженные "плагины" :) Самым больным вопросом остается то, как именно обратиться к main из preloader если main грузился через вспомогательный класс(прелодер майна)? В MainPrel - main.swf находится в объекте imageLoader, и я его поттом методом тыка ))) нашел - ALL.getChildAt(1) (либо если задам имя - то по имени), попробовал написать геттер и сеттер в майне - но с preloader никак к ним обратиться не удается в других примерах когда я добавлял классы (с привязанными к ним плагинами из библиотеки) я удачно это проделывал(get/set, передача в конструктор, получение переменной "Класс.переменная"), но когда я имею дело с подгуженной swf у меня ничего этого не получается ((( |
Я же говорил — подпишитесь на событие COMPLETE от лоадера вашей второй свфки.
В обработчике события получите ссылку на content через (event.currentTarget as LoaderInfo).content. Этот content и будет вашей свф-кой, а точнее экземпляром её документ-класса. |
Вложений: 1
Вот в архиве три файла.
Main.as — документ-класс для основной флэшки. PluginMain.as — документ-класс для подгружаемой флэшки. IPlugin.as — Интерфейс. Поместите все три файла в директорию нового проекта и скомпилируйте сначала плагин с классом PluginMain, переименуйте полученный swf-файл в "LoadedSWF.swf". Затем скомпилируйте основную флэшку с документ-классом Main.as. Во флэшке должен отобразиться текст XML. При этом сам XML находится в классе основной флэшки, а текстовое поле, которое его покажет — в классе плагинской свфки. Удачи.. |
Код AS3:
То как тогда выглядело бы обращение? Код AS3:
покопаться в живом примере - это то что надо! |
| Часовой пояс GMT +4, время: 19:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.