Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Лишний вес первого кадра (http://www.flasher.ru/forum/showthread.php?t=129311)

BleSSeD 29.08.2009 18:56

Лишний вес первого кадра
 
Пишу я сайт. Весь код, вся графика и т.д. у меня в первом кадре. Сделал я прелоадер. Тоесть все-все перенес во второй кадр, но почему-то первый у меня весит 35кб. От куда они взялись я не пойму, там только черный фон.... Что это может быть?

mooncar 29.08.2009 19:00

Значит не все-все.
1. Наверняка в библиотеке есть объекты с Linkage для программного добавления на сцену в процессе исполнения кода (компоненты, фонты, мувики, звук). И галочка там "Export in First Frame". Если так, то экспортируйте объекты тоже во второй, но до их 1-го использования. То есть перенесите теперь конетент уже в 3-й, а во второй вставьте экземпляры экспортируемых объектов. И в Settings для AS2 укажите экспорт классов во 2-ой кадр, а галочки в библиотеке уберите.
Вот тут подробнее.
2. Как насчет элементов самого прелоадера?

BleSSeD 29.08.2009 19:59

В паблиш сеттингс указал что грузит во второй кадр. так что туда ничего не грузится....

mooncar 29.08.2009 20:04

Цитата:

Сообщение от BleSSeD (Сообщение 846617)
В паблиш сеттингс указал что грузит во второй кадр. так что туда ничего не грузится....

И в библиотеке нет элементов с галочкой насчет первого кадра? Может звук какой с Linkage и экспортом в 1-й? Там библиотеку отсортировать можно по Linkage, посмотрите.

И что, в первом кадре нет вообще ничего от предлоадера? Графики, текстовых полей?

BleSSeD 29.08.2009 20:14

Когда в ЦС4 в паблиш сеттингс указываеш что експортировать для второго кадра, то в линкейдж галочка уже не "експортировать для 1 кадра", а "експортировать для 2 кадра".....

А в первом кадре мувики прелоадера весят 9кб, но даже когда я их еще не добавил в свой проект, а только перенес все в второй кадр, то первый весил 35 кб. а теперь с прелоадером 44.

Добавлено через 11 минут
Интересно, что если закоментировать весь код во втором фрейме, то первый занимает 4кб.

mooncar 29.08.2009 20:32

А "Generate Size Report" в Settings разве не дает точного указания на название объекта и его вес?

BleSSeD 29.08.2009 20:41

это где такое есть?

mooncar 29.08.2009 21:10

"Publish Settings" - > "Flash" , там чекбокс "Generate Size Report" есть.

BleSSeD 29.08.2009 21:32

Хм, интересно. сначала оно показало, сколько каждый фрейм занимает, но это я и так знаю. Но вот что интересно.
Код:

ActionScript Bytes    Location
 ------------------    --------
38141    Scene 1:Frame 1
2044    Scene 1:Frame 2

Тоесть 35кб акшин скрипта находится в первом фрейме, это как раз то,что делает этот фрейм таким большим. Но что такое ActionScript Bytes ?

mooncar 29.08.2009 21:34

Ну, видимо, оно и есть - код AS.

BleSSeD 29.08.2009 21:35

Так он у меня во втором фрейме!!!!!

mooncar 29.08.2009 21:37

Включитете-ка Movie Explorer (Alt+F3), может где какой-то код рукописный завалялся бесхозный, посмотрите.

Добавлено через 2 минуты
Если у вас убрать код прелоадера из 1-го кадра, то там все равно 35кБ, верно я вас понял?

BleSSeD 29.08.2009 21:42

http://s2.share.te.ua/b82071/353xpuw1q2.png
Да нет, только немного кода прелоадера.....


Да, даже ввобще без кода в первом фрейме 35 кб.

mooncar 29.08.2009 21:46

Увы, больше ничего не могу подсказать. У вас в коде контента дальше там импорт классов идет, а тут я не силен. Может быть с этим как-то связано...
Убирайте по кусочку из контента код, смотрите через Size Report, что будет...

BleSSeD 29.08.2009 21:55

Интересно что если закоментировать весь код во втором фрейме, то все ок, первый занимает 4кб, и все хорошо...... почему оно так?:(

mooncar 29.08.2009 22:05

Ну не весь сразу комментируйте, что ли... Если переиначить: "Локализуйте, локализуйте, Шура!.." .. по кусочкам убирайте подозрительные действия.

BleSSeD 29.08.2009 22:36

Нашел! Когда коментирую
Код AS3:

import fl.transitions.easing.*;

то все стает ок. Но что мне с етим делать? от твинов отказаться же не могу:)

Добавлено через 15 минут
Нет, просто оно выдавало ошибку, и далее код не шел..... Я не знаю что делать:(

mooncar 29.08.2009 23:15

Продолжайте локализовывать.. Я с AS3, увы, никак.

BleSSeD 29.08.2009 23:30

а можно програмно узнать вес фрейма?

mooncar 29.08.2009 23:41

Кажется, нет (в AS2, по крайней мере).

wvxvw 30.08.2009 00:35

Ну так классы тоже надо во второй фрейм экспортировать :)
(в тех же Publish Settings)

etc 30.08.2009 13:11

Цитата:

Сообщение от BleSSeD (Сообщение 846662)
Интересно что если закоментировать весь код во втором фрейме, то все ок, первый занимает 4кб, и все хорошо...... почему оно так?:(

Потому что это один и тот же класс.

BleSSeD 31.08.2009 16:06

Publish Settings - Flash - Settings - Export classes in frame - и стоит 2. Так что не так?

etc 31.08.2009 18:40

Не так то, что вы пишете код в кадрах.

Jivel 31.08.2009 19:24

основной таймлайн тоже является классом и компилятор весь код с ваших кадров тянет в первый кадр что вполне логично.

mooncar 31.08.2009 19:41

Цитата:

Сообщение от Jivel (Сообщение 847106)
основной таймлайн тоже является классом и компилятор весь код с ваших кадров тянет в первый кадр что вполне логично.

Это как? А что же тогда показывает Size Report, когда для каждого кадра указывает вес заключенного в нем кода AS? Для 1-го - отдельно, для 2-го - отдельно, а не весь сразу в 1-м кадре. Не понятно.

etc 31.08.2009 19:47

Цитата:

Сообщение от mooncar (Сообщение 847114)
Это как? А что же тогда показывает Size Report, когда для каждого кадра указывает вес заключенного в нем кода AS? Для 1-го - отдельно, для 2-го - отдельно, а не весь сразу в 1-м кадре. Не понятно.

Очень просто, в первом кадре код всего рутового класса. Остальные как повезет, может попадут во второй, если не упомянуты в рутовом.

mooncar 31.08.2009 19:50

У автора там import mx... идет во втором кадре... Это имеет отношение к сказанному?

etc 31.08.2009 19:54

Цитата:

Сообщение от mooncar (Сообщение 847118)
У автора там import mx... идет во втором кадре... Это имеет отношение к сказанному?

В том числе. То, что было использовано из mx.*, тоже попадёт в первый кадр.

Jivel 31.08.2009 20:04

то ---> mooncart

вот этот год на первом кадре
Код AS3:

stop();
trace (ff);
trace(this);

и вот этот на втором
Код AS3:

var ff:String;
ff="ты видиш суслика? А его еще нет";

выведет

Код AS3:

null
[object MainTimeline]

то есть трейс в первом кадре уже знает о существовании переменной которая будет создана во втором кадре.
Во втором же кадре - ей просто присваивается значение

Добавлено через 48 минут
Зачем это было сделано? =)

давайте переопределим основной класс и вобьем в поле Class --> MyRoot
и создадим файл с названием MyRoot.as в той же директории где лежит *.fla файл
с кодом

Код AS3:

package
{
        import flash.display.MovieClip;
 
        public class MyRoot extends MovieClip
        {
 
                public function MyRoot()
                {
                        trace("трейс из конструктора -->"+ff);
                }
 
        }
 
}

при трейсе видим следующее
Код AS3:

трейс из конструктора -->null
null
[object MyRoot]

первым сработал трейс конструктора вторым трейс из кадра и в третьем трейсе видим что основной таймлайн ассоциирован с нашим рут классом.
Такимо образом основной таймлайн fla файла становится своеобразной структурой управления. а код класса MyRoot.as фактически нативно приводится к виду
Код AS3:

package
{
        import flash.display.MovieClip;
//и прочие используемые в классе импорты
 
        public class MyRoot extends MovieClip
        {
                var ff:String;
//и прочие используемые в классе переменные
                public function MyRoot()
                {
                        trace("трейс из конструктора -->"+ff);
                }
//и прочие используемые в классе функции
        }
 
}


mooncar 31.08.2009 22:08

Спасибо за пояснения, хотя суслика в вашем первом примере я так и не увидел (у меня trace выдал undefined _level0 ), но в силу того, что я еще очень далек от понимания работы с классами, попытаюсь понять эти особенности позднее, когда буду готов.

Jivel 31.08.2009 22:18

Вложений: 1
что то подсказывает что вы компилировали под AS2 =)

вот пример в CS4

mooncar 31.08.2009 22:22

Да, у меня нет CS4... нужно переходить...
Пример скачаю ваш, потом поразбираюсь, сенкс.

Jivel 31.08.2009 22:46

Вложений: 1
да там без разницы только поле для привязки рут-класса в CS4 называется "Class" а в CS3 "Document class"

вот для CS3

mooncar 31.08.2009 22:51

Спасибо, буду вникать :)

Jivel 31.08.2009 23:03

Цитата:

Сообщение от mooncar (Сообщение 847176)
Спасибо, буду вникать :)

Только обратите внимание что это все таки именно пример того как как работает компилятор AVM2 код на кадрах - есть очень не хорошо и это потенциальный путь к неотлавливаемым глюкам.

mooncar 31.08.2009 23:10

Если не использовать код на кадрах, то как? Если делать include скрипта, ситуация будет лучше?
Можно услышать резюме, как и почему лучше использовать код AS при разработке? Если это не очень сложно?
Централизация кода при include - это очевидно. А еще?

Jivel 31.08.2009 23:26

в AS3
каждый предмет на сцене это обьект включая и основной таймлайн.
То что обьекты и кадры можно добавлять руками - это так сказать переходные костыли совместимости.
Сделайте зоопарк Колина Мука - там все хорошо разжевывается. (ActionScript3.0 для Flash Подробное руководство.)
Ссылку дать не могу но она уже не редкость.
И можете посмотреть пример Мерлина он в ветке AS3 в самом верху. Но сначала или хотя бы параллельно Мука =)

офтоп --
правда после подкастов Ивана Дембицкого и Евгения Потапенко Колина Мука без смеха не могу воспринимать.
енд офтоп --

mooncar 31.08.2009 23:36

Ок, пора браться за AS3... Все, с флудом завязываем.

BleSSeD 31.08.2009 23:58

А мне что делать?:)


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

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