Просмотр полной версии : Лишний вес первого кадра
Пишу я сайт. Весь код, вся графика и т.д. у меня в первом кадре. Сделал я прелоадер. Тоесть все-все перенес во второй кадр, но почему-то первый у меня весит 35кб. От куда они взялись я не пойму, там только черный фон.... Что это может быть?
Значит не все-все.
1. Наверняка в библиотеке есть объекты с Linkage для программного добавления на сцену в процессе исполнения кода (компоненты, фонты, мувики, звук). И галочка там "Export in First Frame". Если так, то экспортируйте объекты тоже во второй, но до их 1-го использования. То есть перенесите теперь конетент уже в 3-й, а во второй вставьте экземпляры экспортируемых объектов. И в Settings для AS2 укажите экспорт классов во 2-ой кадр, а галочки в библиотеке уберите.
Вот тут (http://flash-ripper.com/archives/001800.php)подробнее.
2. Как насчет элементов самого прелоадера?
В паблиш сеттингс указал что грузит во второй кадр. так что туда ничего не грузится....
В паблиш сеттингс указал что грузит во второй кадр. так что туда ничего не грузится....
И в библиотеке нет элементов с галочкой насчет первого кадра? Может звук какой с Linkage и экспортом в 1-й? Там библиотеку отсортировать можно по Linkage, посмотрите.
И что, в первом кадре нет вообще ничего от предлоадера? Графики, текстовых полей?
Когда в ЦС4 в паблиш сеттингс указываеш что експортировать для второго кадра, то в линкейдж галочка уже не "експортировать для 1 кадра", а "експортировать для 2 кадра".....
А в первом кадре мувики прелоадера весят 9кб, но даже когда я их еще не добавил в свой проект, а только перенес все в второй кадр, то первый весил 35 кб. а теперь с прелоадером 44.
Добавлено через 11 минут
Интересно, что если закоментировать весь код во втором фрейме, то первый занимает 4кб.
А "Generate Size Report" в Settings разве не дает точного указания на название объекта и его вес?
"Publish Settings" - > "Flash" , там чекбокс "Generate Size Report" есть.
Хм, интересно. сначала оно показало, сколько каждый фрейм занимает, но это я и так знаю. Но вот что интересно.
ActionScript Bytes Location
------------------ --------
38141 Scene 1:Frame 1
2044 Scene 1:Frame 2
Тоесть 35кб акшин скрипта находится в первом фрейме, это как раз то,что делает этот фрейм таким большим. Но что такое ActionScript Bytes ?
Ну, видимо, оно и есть - код AS.
Так он у меня во втором фрейме!!!!!
Включитете-ка Movie Explorer (Alt+F3), может где какой-то код рукописный завалялся бесхозный, посмотрите.
Добавлено через 2 минуты
Если у вас убрать код прелоадера из 1-го кадра, то там все равно 35кБ, верно я вас понял?
http://s2.share.te.ua/b82071/353xpuw1q2.png
Да нет, только немного кода прелоадера.....
Да, даже ввобще без кода в первом фрейме 35 кб.
Увы, больше ничего не могу подсказать. У вас в коде контента дальше там импорт классов идет, а тут я не силен. Может быть с этим как-то связано...
Убирайте по кусочку из контента код, смотрите через Size Report, что будет...
Интересно что если закоментировать весь код во втором фрейме, то все ок, первый занимает 4кб, и все хорошо...... почему оно так?:(
Ну не весь сразу комментируйте, что ли... Если переиначить: "Локализуйте, локализуйте, Шура!.." .. по кусочкам убирайте подозрительные действия.
Нашел! Когда коментирую
import fl.transitions.easing.*;
то все стает ок. Но что мне с етим делать? от твинов отказаться же не могу:)
Добавлено через 15 минут
Нет, просто оно выдавало ошибку, и далее код не шел..... Я не знаю что делать:(
Продолжайте локализовывать.. Я с AS3, увы, никак.
а можно програмно узнать вес фрейма?
Кажется, нет (в AS2, по крайней мере).
Ну так классы тоже надо во второй фрейм экспортировать :)
(в тех же Publish Settings)
Интересно что если закоментировать весь код во втором фрейме, то все ок, первый занимает 4кб, и все хорошо...... почему оно так?:(
Потому что это один и тот же класс.
Publish Settings - Flash - Settings - Export classes in frame - и стоит 2. Так что не так?
Не так то, что вы пишете код в кадрах.
основной таймлайн тоже является классом и компилятор весь код с ваших кадров тянет в первый кадр что вполне логично.
основной таймлайн тоже является классом и компилятор весь код с ваших кадров тянет в первый кадр что вполне логично.
Это как? А что же тогда показывает Size Report, когда для каждого кадра указывает вес заключенного в нем кода AS? Для 1-го - отдельно, для 2-го - отдельно, а не весь сразу в 1-м кадре. Не понятно.
Это как? А что же тогда показывает Size Report, когда для каждого кадра указывает вес заключенного в нем кода AS? Для 1-го - отдельно, для 2-го - отдельно, а не весь сразу в 1-м кадре. Не понятно.
Очень просто, в первом кадре код всего рутового класса. Остальные как повезет, может попадут во второй, если не упомянуты в рутовом.
У автора там import mx... идет во втором кадре... Это имеет отношение к сказанному?
У автора там import mx... идет во втором кадре... Это имеет отношение к сказанному?
В том числе. То, что было использовано из mx.*, тоже попадёт в первый кадр.
то ---> mooncart
вот этот год на первом кадре
stop();
trace (ff);
trace(this);
и вот этот на втором
var ff:String;
ff="ты видиш суслика? А его еще нет";
выведет
null
[object MainTimeline]
то есть трейс в первом кадре уже знает о существовании переменной которая будет создана во втором кадре.
Во втором же кадре - ей просто присваивается значение
Добавлено через 48 минут
Зачем это было сделано? =)
давайте переопределим основной класс и вобьем в поле Class --> MyRoot
и создадим файл с названием MyRoot.as в той же директории где лежит *.fla файл
с кодом
package
{
import flash.display.MovieClip;
public class MyRoot extends MovieClip
{
public function MyRoot()
{
trace("трейс из конструктора -->"+ff);
}
}
}
при трейсе видим следующее
трейс из конструктора -->null
null
[object MyRoot]
первым сработал трейс конструктора вторым трейс из кадра и в третьем трейсе видим что основной таймлайн ассоциирован с нашим рут классом.
Такимо образом основной таймлайн fla файла становится своеобразной структурой управления. а код класса MyRoot.as фактически нативно приводится к виду
package
{
import flash.display.MovieClip;
//и прочие используемые в классе импорты
public class MyRoot extends MovieClip
{
var ff:String;
//и прочие используемые в классе переменные
public function MyRoot()
{
trace("трейс из конструктора -->"+ff);
}
//и прочие используемые в классе функции
}
}
Спасибо за пояснения, хотя суслика в вашем первом примере я так и не увидел (у меня trace выдал undefined _level0 ), но в силу того, что я еще очень далек от понимания работы с классами, попытаюсь понять эти особенности позднее, когда буду готов.
что то подсказывает что вы компилировали под AS2 =)
вот пример в CS4
Да, у меня нет CS4... нужно переходить...
Пример скачаю ваш, потом поразбираюсь, сенкс.
да там без разницы только поле для привязки рут-класса в CS4 называется "Class" а в CS3 "Document class"
вот для CS3
Спасибо, буду вникать :)
Только обратите внимание что это все таки именно пример того как как работает компилятор AVM2 код на кадрах - есть очень не хорошо и это потенциальный путь к неотлавливаемым глюкам.
Если не использовать код на кадрах, то как? Если делать include скрипта, ситуация будет лучше?
Можно услышать резюме, как и почему лучше использовать код AS при разработке? Если это не очень сложно?
Централизация кода при include - это очевидно. А еще?
в AS3
каждый предмет на сцене это обьект включая и основной таймлайн.
То что обьекты и кадры можно добавлять руками - это так сказать переходные костыли совместимости.
Сделайте зоопарк Колина Мука - там все хорошо разжевывается. (ActionScript3.0 для Flash Подробное руководство.)
Ссылку дать не могу но она уже не редкость.
И можете посмотреть пример Мерлина он в ветке AS3 в самом верху. Но сначала или хотя бы параллельно Мука =)
офтоп --
правда после подкастов Ивана Дембицкого и Евгения Потапенко Колина Мука без смеха не могу воспринимать.
енд офтоп --
Ок, пора браться за AS3... Все, с флудом завязываем.
А мне что делать?:)
Вынесите код второго и прочих фремов в другой класс или классы и используйте его уже после загрузки флешки и будет вам счастье.
Добавлено через 17 минут
вот тут более подробно
http://etcs.ru/blog/as3/export_in_second_frame_flash_cs3/
и тут
http://racer242.blogspot.com/2008/01/flex-as3.html
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.