Просмотр полной версии : Экспорт классов не в первый фрейм.
Timerlan
26.04.2007, 11:57
Вот возникла такая проблема:
создаю новый документ, присваиваю ему document class. В этом классе отслеживаю загрузку и затем даю команду play(). Во втором фрейме на временной шкале создаю мувик, присваиваю ему свой собственный класс( допустим MyClass, при этом галочку экспорт в первый фрейм снимаю). Затем из document class отслеживаю когда наступит 3й фрейм и там создаю новый клип командой var mc=new MyClass();addChild(mc);
Так вот проблема: если в настройках публикации установить экспорт классов во второй фрейм( или в любой другой, отличный от первого), то мувик не создается. В чем может быть проблема?
Проверь, работает ли вообще Document class. А лучше прицепи исходник, ковырну (самому лень ваять :D).
Timerlan
26.04.2007, 13:24
document class работает.
исходник прикрепил. Сейчас там в настройках публоикации стоит первый фрейм для экспорта классов и голубой прямоугольник создается, а вот если для экспорта поставить второй фрейм, ничего не создается и даже конструктор не выполняется.
Для начала: код должен быть либо в классе, либо в кадрах. Одно из двух.
Далее, судя по всему экспорт во второй кадр либо не пашет, потому как первый кадр самый тяжелый, либо в первый кадр идет экспорт только Document class. Сам объект Sq существует (и конструктор вызывается), но не существует его контента.
Вероятно, сей момент нужно, видимо, уточнить в хелпе.
Timerlan
26.04.2007, 13:45
конструктор не вызывается. Об этом говорит трейс, т.к. выводит "A" только один раз( для того мувика что во втором фрейме).
И, я так понимаю, что при экспорте классов во второй фрейм, в первый экспортится только документ класс
ЗЫ, код в кадрах вбил пытаясь наконец понять, почему не работает.
Да ну? У меня при попытке создать в первом кадре клип вызвался конструктор. И в третьем тоже. А вот во втором никакого вызова конструктора не произошло как раз.
Timerlan
26.04.2007, 14:01
ааа:) ну это не шибко меняет дело, контент то теряется. И сей факт довольно критичен т.к. если это ошибка в самом флэше, для создания больших проектов, придется делать ещё один свф, который будет грузить в себя основной документ т.к в основном документе, из-за того что все будет валиться в первый фрейм прелоадер теряет свой смысл.
Нужно проштудировать хелп, судя по всему. Только вот лично мне совершенно не хочется заниматься этим :D
Timerlan
26.04.2007, 15:11
да что-то я в этом хелпе не нашел ничего по этому поводу.
artfabrique
16.05.2007, 06:37
ну что? есть продвижения? как решился вопрос?
Да пока никак, в общем-то. Острой необходимости в экспорте во второй кадр у меня пока не было, но вообще есть некоторая неясность с переходами по кадрам. Как можно уже было заметить, конструктор вызывается, а контента-то нет…
Для начала: код должен быть либо в классе, либо в кадрах. Одно из двух.
бррр... я еще больше запутался в хелпе в разделе Getting started with ActionScript > Example: Creating a basic application приведён пример класса, а в первом фрейме создаётся экземпляр класса... :wacko:
Мое практическое исследование данного вопроса:
http://dev.etcs.ru/blog/as3/export_in_second_frame_flash_cs3/
Timerlan
19.05.2007, 00:09
__etc спасибо!
А если не трудно, можешь пояснить вот эту строку:
var programClass:Class = loaderInfo.applicationDomain.getDefinition("Program") as Class;
ведь именно она исправляет обсуждаемую проблему, но суть её понять не получается
Суть далеко в недрах AS3 :)))
Главное знать, что in fact, класс Program есть новый Document class, который будет создан после загрузки флешки. А настоящий Document class выполняет роль прелоадера.
Timerlan
19.05.2007, 00:46
:)
Да, но все таки любопытно, так все было задумано или это все таки баг
Не знаю, как всё было задумано, но getDefinition в первую очередь предназначался для использования классов из внешнего клипа. Как выяснилось, это работает и в пределах текущего клипа.
Timerlan
19.05.2007, 00:56
Да я уже копнул в хэлпе про aplicationDomain и getDefinition. Полезная, однако, штука. Можно будет делать все в одном свф а в другие только запихивать классы и подгружать все это дело когда надо.
Но все таки твое решение экспорта не в первый фрейм сильно смахивает на шаманство, думаю все таки в адобе не доглядели:)
Не знаю, насколько это шаманство, но работает. Мое дело предложить — ваше дело отказаться.
Timerlan
19.05.2007, 01:06
Отказываться не будем:) Ещё раз спасибо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.