Flash Ripper RSS Readers

FAQ #7: Как сделать, чтобы прелоадер моего сайта стартовал с отметки 1%, а не 75?

Flash CS3 на дворе, но вечный вопрос задается все чаще: как сделать, чтобы предзагрузчик моего флэш-сайта стартовал не с 75 процентов, а с 1? В том числе и во Flash CS3?

Причина такого поведения очень проста: ваш предзагрузчик появляется, когда целиком загружен первый кадр клипа (предполагаем, что прелоадер находится внутри загружамого им приложения). Если первый кадр "тяжелый" и весит 75% от общего размера -- то и прелоадер честно появляется только после того, как эти 75% будут загружены.

Чтобы решить проблему, нужно уменьшить эти 75% до 1%. Сначала разберемся, из чего они состоят. А это:

  1. Все элементы библиотеки, в свойствах которых установлен флаг "Export in first frame": Мувиклипы, компоненты, шрифты, звуки...
  2. Классы вашего приложения.
  3. Сам прелоадер

Следовательно, нужно:

1. В свойствах КАЖДОГО элемента библиотеки снять флаг "Export in first frame" и ВРУЧНУЮ экспортировать его в нужный кадр приложения, идущий ПОСЛЕ прелоадера, но ДО первого использования данного элемента. Для этого я организовываю свои флэш-приложения таким образом: создаю спец. слой "export assets", в котором и размещаю вручную все экспортируемые элементы ВНЕ СЦЕНЫ; обратите внимание, что в 10 кадр этого слоя элементы экспортируются, а в 11 кадре их уже нет:

Основное приложение стартует с 20 кадра (метка "app init"); в своих проектах вы можете использовать другие интервалы: например, экспортировать в 3 кадр и запускать приложение в четвертом; я же опытным путем пришел к тому, что чувствую себя комфортно при таком несколько избыточном разносе элементов (ага, а в GW Basic строки нумеровались через 10. Славное было время -- компьютерный кружок, ПЭВМ "Поиск"...)

2. В настройках публикации указать, что классы должны экспортироваться не в первый кадр, как это происходит по умолчанию, а в выбранный вами. В данном примере -- это тот же 10 кадр. Итак, идем в меню Publish Settings > Flash > Actionscipt 2.0 Settings > и в поле "Export frame for classes" (номер кадра в который будет экспортироваться шрифт) вводим 10 (в данном случае). Внимание: для Flash 9 / CS3 / AS3 - мегаважное замечание от __etc!)

Этих действий должно быть достаточно, чтобы ваш прелоадер, размещенный ДО кадра экспорта, стартовал с нуля процентов.

3. Если, конечно, сам прелоадер не весит полмегабайта. Впрочем, даже для этих ситуаций есть выход: делаем прелоадер прелоадера, а затем - сам прелодер. Думаете, шучу? На практике приходится решать даже такие задачи, и ради одной цели: с точки зрения посетителя прелоадера быть не должно вообще.

У рецепта есть тонкости.

Важный момент: классы, компоненты, скинование

Как правило, все мувиклипы нужно вручную экспортировать в кадр, предшествующий кадру экспорта классов: в результате флэш-приложение загружает сначала графику, а затем -- классы, этой графикой управляющие. Но если вы используете компоненты и их скины, вам может понадобиться экспортировать их именно в том же кадре, что и классы -- очевидно, это следствие тесной взаимосвязи классов, скинов и компонентов.

В результате может получиться такая модель: в 9-й кадр экспортируются все не-компоненты, а в 10-й -- компоненты, скины и классы.

Выглядит запутанно, но если вы будете держать в голове главную мысль -- "каждый объект должен быть экспортирован до свего первого использования" -- то вам станет значительно легче наводить порядок в проекте и при этом стартовать прелоадер с нуля процентов.

Звуки

Убрав для звука в библиотеке галочку "Export in first frame", и разместив звук в выбранном кадре экспорта (для чего вам может понадобиться еще один слой, назовем его, например "export sound assets"), зайдите в Properties этого кадра и выберите данный звук. А затем в поле Sync выберите значение Stop, чтобы он вдруг спонтанно на зазвучал - пишет -V-.

Теперь он контролируется, как любой другой залинкованный звук.

Шрифты

Шрифт экспортируется в тот кадр приложения, в котором впервые встречается текстовое поле, использующее этот шрифт - как верно замечает __etc.

Поэтому все мувиклипы, содержащие такие текстовые поля, должны экспортироваться не в первый кадр, а в выбранный вами кадр экспорта -- как было описано выше.

В ситуации же, когда вы хотите в прелоадере использовать тот самый шрифт, что и в основном приложении, можно воспользоваться советом от meanjerk:

"Касательно текстов - если в первом кадре нужно использовать текст, причем критично, чтобы он был таким же, что и в последующих кадрах, но с меньшим кол-вом символов, скажем это 11 Arial bold, то в первом кадре делаем этот текст не Arial, а скажем, Arial Cyr или Arial Greek. Если аналога шрифта не нашлось, придется попариться с дублированием шрифта в библиотеку (для использования в _последующих_ кадрах, а не в первом), что может увеличить общий вес ролика, но проблему все же решит."

Этим вопрос со шрифтами не исчерпан.

Ссылки

Все еще неясно? Почитайте здесь:

Важно! Пользователи Flash CS3, читайте заметку от Дениса Коляко: Экспорт классов во второй кадр и создание прелоадера во Flash CS3.

Писал Rost, 3 Август 2007 14:45

Найдены баги:

Отличная статья, спасибо Рост, я только почти созрел на изучение этой проблемы для цс3) а тут ты все так аккуратненько собрал!

__i - 3 Август 2007 16:31

На здоровье, Илья. Зная твои способности просто уверен - тебе будет что сюда добавить, так что не стесняйся, пиши :)

Шимоаричи - 3 Август 2007 19:48

О вечном. Всем кто работает во флеше CS3 надо давать медаль. Большую-большую. До сих пор немогу привыкнуть к его """фишкам""".

Иван - 3 Август 2007 22:09

Имхо проще не извращаться и делать внешний прелоадер. Более того, тогда основной мувик можно шифровать, что несколько улучшит защиту от декомпиляторов (ASV 6 выйдет в сентябре)

Это экономит массу времени на более интересные и творческие задачи:)

DL1t - 3 Август 2007 23:47

DL1t, это далеко не всегда удобно.

__etc - 4 Август 2007 10:41

Ребята, а у меня вопрос: поле "Export frame for classes" принимает только числовые значения ? Если мне необходимо указать другую, нежели чем первую, сцену, то как поступить ? Или, может быть, в этом случае кадры имеют сквозную нумерацию ?

Елисей - 5 Август 2007 16:59

Да, только числовые. Сцен в SWF не существует. Узнать номер кадра текущей сцены можно простым трейсом _currentframe в первом кадре сцены.

__etc - 5 Август 2007 18:11

Елисей, профессиональное флэш-сообщество пришло к выводу, что от использования сцен лучше отказаться в принципе, так как они порождают слишком много путаницы, связанной с тем, что внутри SWF-файла их действительно совсем нет - там нумерация плоская. Так, первый кадр второй сцены идет сразу за последним кадром первой. Это создает массу неудобств - от сцен лучше отказаться.

У меня вопрос к присутствующим - есть ссылка на статью по теме отказа от сцен? Вопрос возникает часто.

Rostislav Siryk - 12 Август 2007 14:57



Это запись из категории 'Preloading'. 10 еще cвежих:

Архивы по категориям:

3D-18, Adobe AIR-30, Animation-1, Apache Ant-1, Architecture-1, ARP-1, Art-25, Articles-26, AS3-52, Books-7, Business-3, Cairngorm-2, CI-1, Classes-10, Coding-30, Community-113, Components-19, Contests-28, Cool-Job-5, Debug-18, Design-26, Development-84, EMO-1, Events-13, Extensions-2, FAQ-8, FDS-1, Flash and html-5, Flash Player-35, Flash Updates-8, Flash-scene-1, flash10-4, FlashLite-2, Flex-30, Flex 2-80, Flickr-1, FMS-1, FPUG-46, frameworks-1, Games-11, Good Job!-35, HaXe-14, Health-2, Humor-10, Ideas-13, JavaScript-1, Job-26, JSFL-8, Links-2, Linux-1, Maps-1, Math-8, Money-11, MXML-1, Open Source-15, Optimization-2, Patterns-2, Personalities-27, Politics-1, Preloading-3, Productivity-9, PureMVC-10, Pv3d-1, Rafpug-4, Red5-3, Remoting-11, Resources-21, Ruby-6, SAAS-1, Security-11, SEO-8, Silverlight-5, Sound-3, Strategy-120, Tamarin-1, Tools-113, Training-2, Trash-8, URAFPUG-13, Urgent-1, Usability-6, Video-6, VoIP-5, Wallop-1, Wishlist-2, Архив всех записей (большой)

За последние месяцы:

Июл 2008: Международная встреча разработчиков URAFPUG завершена, URAFPUG - трансляция студии Flex-фреймворка Mate, весь Июл

Июн 2008: Попытка предварительных выводов о встрече аниматоров, Онлайн трансляция встречи аниматоров в Донецке, весь Июн

Май 2008: Если 3D, то по-взрослому: официальный запрос в Adobe по поводу контроля над мип-маппингом. Нужна ваша поддержка!, В этом году «Russian Flash Awards» пройдет в «космическом стиле», весь Май

Апр 2008: Программирование под флэш платформу. Cтатья (местами спорная), Advanced Flash Components бесплатно раздает все свои AS2-компоненты, весь Апр

Мар 2008: Зарплаты программистов в 2007 году, FlashPhone как технология года? Технология года? В Рунете?, весь Мар

Фев 2008: ЙА ФПУГ — регистрация на первую встречу UAFPUG продолжается, Закулисы Flex и секрет успеха опенсорс-проекта, весь Фев





Примечания:
Статус документа
: в процессе
   2002-2007 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)