Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Достучаться до свойств подгружаемой флешки (http://www.flasher.ru/forum/showthread.php?t=151558)

xAnthony 01.03.2011 18:30

Достучаться до свойств подгружаемой флешки
 
Делаю подгрузку внешнего swf-файла:

Код AS3:

public class program extends MovieClip {
 
        public static var loader:Loader
 
        public function program()
        {
                loader = new Loader();
                var request:URLRequest = new URLRequest("path_to_file/auth.swf");
 
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onComplete);
                loader.load(request);
        }
 
        public function onComplete (e:Event)
        {
                stage.addChild(loader);
 
                var target:MovieClip = e.target.content as MovieClip;
                trace (target.testVar);
        }
}

Внешний ролик привязан к классу main.Auth, который выглядит следующим образом:

Код AS3:

public class Auth extends MovieClip {
 
        public var testVar:String = "aaa";
 
        public function Auth() {}
}

В случае, когда в подгружаемом файле нет никаких обьектов на сцене, а в библиотеке нет символов с пометкой "Экспорт для ActionScript", доступ к переменной testVar происходит нормально. Однако, если таковые имеются, выдается ошибка:

ReferenceError: Error #1069: Не удалось найти свойство testVar в main.Auth__Preloader__; отсутствует значение по умолчанию.
at program/onComplete()


При этом подгруженный ролик на сцену добавляется, но обратиться к его свойству не удается.
За ранее, спасибо за помощь!

in4core 01.03.2011 19:03

Цитата:

main.Auth __Preloader__
Че за прелоадер? в нем же ищет testVar .... хм

xAnthony 01.03.2011 19:14

in4core, это я понял...
Этот класс и еще ряд неизвестных классов генерируется при публикации, когда на сцене флешки есть какие-либо обьекты (через FlashDevelop смотрю список классов swf-файла). При этом нужного класса main.Auth там нет.

in4core 01.03.2011 20:58

че то ерунда какая то, не может такого быть, если документ класс у вас main.Auth то таким он и будет , хоть как тут будь!

xAnthony 01.03.2011 21:25

Опубликовал клип в 9 версии Flash Player (ранее публиковал в 10). Теперь все работает!
Что не так с 10 плеером?

dimarik 01.03.2011 21:36

Соглашусь с in4core. Не соображаю практически ничего в FD, но складывается впечатление, что DocumentClass у loadee есть main::Auth __Preloader__, а во втором его кадре инстанцируется main::Auth и добавляется на сцену. Что-то типа выбранного шаблонного проекта "AS3 Project with Preloader".

in4core 01.03.2011 23:05

dimarik а в чем ты пишешь если не в FD? Во FlexBilder чтоли ? не поверю если в IDE

dimarik 02.03.2011 10:48

@in4core, да, Flash/Flex Builder.

omfg 14.04.2011 13:46

Хотелось бы поднять снова эту тему и до конца всё прояснить:

У меня ситуация аналогичная: есть родительский swf (Document class: Main), есть загружаемый swf (Document class: subMain).

Код аналогичный тому, что указан в первом посте. Работаю во Flash CS5

Вылетает ровно то же исключение. И появляется тоже не понятный _PRELOADER_.
В настройках проекта, меняю flash player с 10 на 9 -> всё работает.
Далее в настройках AS3 увидел пункт:

Preloader Method: Preloader SWF
Preloader SWF:$(AppConfig)/ActionScript 3.0/rsls/loader_animation.swf

Поменял Preloader Method на Custom preloader loop -> всё заработало в 10 flash player'е

Может кто-нибудь прояснить эту опцию?

Теперь второй момент: на скорую руку набросал два проекта с кодом ну совсем как в первом посте: фактически по 2 функции на каждый swf. Гружу один в другой, вызываю метод загруженного(или обращаюсь к его свойству) -> всё работает и с этими настройками, с которыми не работает сам проект. Отличие первого примера от второго только одно - в первом много экранных объектов на сцене, соответственно больший размер загружаемого файла, а во втором ничего нет.

Пожалуйста, объясните в чем магия

Добавлено через 1 час 31 минуту
Да, и еще хотел дописать, что если в настройках всё того же AS3 выставить
Default linkage: merged in code вместо Runtime Shared Library тоже всё работает


Часовой пояс GMT +4, время: 02:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.