Просмотр полной версии : скрипт подгружаемой SWF-ки не выполняется
доброго времени суток.
я столкнулся со странной проблемой с загружаемой SWF-кой.
при создании анимации в последний кадр вставлен скрипт:
trace("stop");
dispatchEvent(new Event("anim_stop"));
жмем F12 и видим, что всё работет номально: трейсы выводятся.
загружаем полученную SWF-ку в другое флеш-приложение (Loader-ом), добавляем на сцену и, опять-таки, видим, что всё работает как надо: трейсы выводятся, эвенты отправляются.
затем сцене, содержащей анимацию присваиваем собственное имя класса (по умолчанию ему присваивается имя MainTimeline). жмем F12, и всё вроде продолжает работь... но если загрузить эту новую SWF-ку тем же лоадером, то уже ничего не работает: трейсы не пишутся, события не генерируются... внутренний скрипт просто игнорируется.
подскажите в чем проблема?
Не напомните, как сцене присвоить имя класса?
Не напомните, как сцене присвоить имя класса?
хм.... в данный момент нету флеша под рукой...
ну нашел вот картинку на просторах интернета =)..... я имел ввиду то, что на картинке (http://multimedia.journalism.berkeley.edu/media/upload/tutorials/flash/Flash-workspace-cs3.jpg) подписано как DocumentClass (снизу)
cleptoman
12.01.2011, 10:22
блин, ну все же поняли о чем речь )) (про сцену и класс)
по сути:
возможно при прописывании документ класса полезли какиенить эксепшны. проверьте, не лезут ли ошибки вашей SWF с документ классом.
возможно при прописывании документ класса полезли какиенить эксепшны. проверьте, не лезут ли ошибки вашей SWF с документ классом.
проверял, нет там никаких эксепшенов... их было бы видно сразу
еще не уточнил: я не создавал никакого специального класса, просо в поле DocumentClass прописал название (произвольное) (мне посто нужно, чтобы классы root-овых объектов подгружаемых SWF-ок были уникальны)
cleptoman
12.01.2011, 13:31
ну это вы зря.)
для того, чтобы ваша свф слала события, то ваш документ класс нужно как минимум унаследовать от EventDispatcher ..может по этому и не работает. сейчас ваш документ класс создается автоматом и наследуется от Object, что не есть гуд. создайте класс, наследник от мувиклипа, если вас не устраивает MainTimeline.
спасибо, попробую... хотя я был уверен, что он наследуется как минимум от MainTimeline
Возможно конфликт классов основного и загружаемого swf. Правда, насколько я помню, для каждой swf создается свой пакет для MainTimeline.
cleptoman
12.01.2011, 14:57
хотя я был уверен, что он наследуется как минимум от MainTimeline
хмм..действительно не от Object
написал от балды в документклассе, не создавая AS файла:
import flash.utils.getQualifiedSuperclassName;
trace(this); // [object SomeClass]
trace(getQualifiedSuperclassName(this)); // flash.display::MovieClip
Добавлено через 7 минут
Возможно конфликт классов основного и загружаемого swf. Правда, насколько я помню, для каждой swf создается свой пакет для MainTimeline.
затестил.
с пустым полем документ класса:
trace(getQualifiedClassName(this)); // Untitled_fla::MainTimeline // создает пакет
с непустым полем, но без AS файла:
trace(getQualifiedClassName(this)); // SomeClass // не создает пакет
тады мабудь и конфликт.
помогло наследование от MovieClip-а.
проблема, видимо, была в том, что при задании собственного имени класса, флеш "забывает" воткнуть некоторые классы. У меня он не смог найти Event ("Call to possibly undefined type Event").
Добавил в AS-файлimport flash.events.Event; и всё заработало :yahoo:... всем спасибо!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.