Оптимізація macromedia flash

Оптимізація Macromedia Flash

За останній рік технологія Flash завоювала багато умів і сердець, в тому числі і в Росії. Для деяких Flash став професією, деякі використовували його для прикраси своїх сторінок, а деякі просто цокали мовами в захопленні, побачивши його інтерактивні можливості. З'явилися книги по Flash, матеріали в мережі. Можна однозначно сказати, що "справа Flash" в Росії інтенсивно просувається. Отже ...

До сих пір ми задавалися питанням - як зробити? Але просто зробити, це ще не ознака майстерності. Справжній професіонал буде завжди ставити питання - як зробити добре? Щоб зробити добре, треба досконально знати свій інструмент, звертаючи увагу на найдрібніші деталі, і правильно вирішувати компроміси, що стосуються цих деталей. Йтиметься про оптимізацію під Flash.

Швидкість виконання фільмів

Загальновідомо, що плавність анімації досягається великою кількістю програються кадрів в секунду (fps - frames per second). Отже, ми прагнемо вказувати велику швидкість у властивостях Flash-фільму. (За замовчуванням, Flash використовує значення 12 fps. Для якісної анімації потрібно мінімум 25-30 fps).

Однак, збільшення кількості кадрів в секунду вимагає більшої продуктивності комп'ютера, на якому виповнюється анімація, і якщо її не вистачає, Flash скорочує частоту кадрів. Тому, навіть якщо ми встановимо fps рівним 100, Flash буде виходити з можливостей, наявних для відтворення.

Розміри і "кількість" анімації

Є способи підвищити fps. Перший, напевно, не найвигідніший - зменшити розміри відтвореного кліпу: на слабкій машині кліп з розмірами 300x200 буде відтворюватися набагато краще, ніж, скажімо, кліп з розмірами 600x400.

Другий полягає в декількох простих правилах складання анімації:

1) Найпростіше: чим більше у вас анімуйте об'єктів в сцені, тим складніше Flash обробляти їх, і тим повільніше буде відтворення.

2) Вигідніше використовувати один символ, що містить дрібні об'єкти, ніж багато символів, окремо для кожного об'єкта. Як приклад можна привести імітацію снігу на кліпі. Багато символів, кожен з яких буде відповідати за окрему сніжинку, будуть рухатися набагато повільніше, ніж один символ, який відповідає за весь сніг.

3) Не тримайте символи на сцені, якщо ви їх не використовуєте. На жаль, Flash не так інтелектуальний, щоб не прораховувати кліпи з _alpha або _vizible рівними нулю. Якщо кліп невидимий, краще його прибрати зі сцени, а потім, коли буде потрібно, його показати.

Майте на увазі ці моменти, коли створюєте анімацію в Flash.

По-перше, рівень якості можна встановити вручну при експорті. При цьому не забувайте, що якщо не відключити контекстне меню, то у користувача залишається можливість регулювати якість.

По-друге, якість можна змінювати динамічно під час виконання анімації (параметр _quality). На час відтворення особливо складних і "швидких" фрагментів, можна знижувати якість, тим самим виграючи у швидкості, а коли "кількість" анімації зменшиться, знову повернутися до високого рівня якості.

При створенні анімаційних заставок, я вважаю за краще давати вибір якості користувачеві, помістивши в куточок пару / трійку кнопок, що дозволяють регулювати якість.

Експериментуйте, і ви побачите, що якість істотно впливає на швидкість відтворення кліпів.

Потокове відтворення і попередня завантаження

Це ще один компроміс, який потрібно враховувати. Якщо для вас незначні такі затримки, або у вас є впевненість, в тому, що канали зв'язку не підведуть - вам нема про що турбуватися. Але якщо вам хочеться, щоб ваш кліп відтворювався без затримок, тоді його треба забезпечити попередніми завантажувачем (preloader) - це прийом, що дозволяє затримати відтворення до повного завантаження фільму.

Має сенс протестувати роботу вашого фільму на декількох швидкостях за допомогою функції Test Movie (Control-> Test Movie, Ctrl + Enter). Швидкість можна вибирати в меню Debug, яке з'являється після запуску фільму.

поточний звук

Останній аспект, який, я вважаю, відноситься до продуктивності Flash анімації - це потоковий звук. У Flash є кілька способів синхронізації звуку. Якщо ви використовуєте досить тривалий фрагмент музики (або будь-якого іншого звукового супроводу), і події анімації повинні збігатися з подіями звуку, то вам потрібно використовувати синхронізацію Stream (потік). У цьому випадку вся анімація буде синхронізована зі звуком, і два цих потоку йтимуть паралельно, не відстаючи один від одного.

Розмір .swf файлів

Напевно, основною перевагою Flash, як векторного формату, є маленький розмір файлу: чим менше файл, тим швидше він завантажується по мережі, тим більше інформації можна передати. На жаль Flash не є високорозвиненим інструментом і не вміє оптимізувати розмір файлів. Однак, якщо ми знаємо як він працює, нам легше створювати наші Flash-творіння відповідно до тих вимог, які у нас є. У цьому розділі ми розглянемо аспекти, що впливають на розмір Flash файлів.

Повторне використання, символи

Символи в Flash - потужний спосіб економії місця. Вони дозволяють використовувати повторно будь-які фрагменти вашої творчості. Якщо ви використовуєте що-небудь хоча б два рази, зробіть це символом.

Наприклад, вам потрібно намалювати безліч різнокольорових м'ячиків різного розміру. Використовуйте один символ для всіх м'ячиків. Ви можете змінити розмір і колір кожного примірника цього символу і отримати потрібну сцену. Це займе набагато менше місця, ніж якби для кожного м'ячика виділявся б один символ.

Графіка, створена вручну

Коли ви створюєте графіком в Flash, переконайтеся в тому, що у вас ніде не залишилося зайвих ліній полігонів, порожніх або прозорих фігур, які не несуть на собі функціонального навантаження.

Обмежте себе у використанні спеціальних типів ліній, таких як пунктир, нечіткі лінії, точки і т.д. Суцільні лінії займають менше місця. Товсті лінії, намальовані олівцем, займають набагато менше, ніж лінії, намальовані пензлем.

Коли ви імпортуєте векторну графіку, переконайтеся, що в ній не існує прихованих ліній або об'єктів.

Flash дозволяє згладжувати, випрямляти і оптимізувати лінії (меню Modify -> Smooth, Straighten, Optimize). Чим пряміше лінії, тим менше місця вони займають. І, навпаки, чим вони детальніше, тим більше. Оптимізує лінії, можна задати рівень згладжування, а так само виконати багатопрохідний оптимізацію.

Текст, шрифти

За замовчуванням, Flash перетворює все використовувані букви (я не використовую слово "символ" щоб не плутати з відомим терміном Flash) в полігони. Це означає, що для фрази "Жили-були дід та баба" Flash збереже накреслення літер "Жілбидеа-". Кожна буква зберігається у вигляді полігону, який потім розмножується потрібну кількість разів. Причому, якщо ми напишемо ту ж фразу іншим шрифтом, Flash буде змушений зберегти накреслення літер цього шрифту теж. Уявіть, скільки місця займе опис цілого шрифту, в разі якщо ми задіємо весь алфавіт (плюс до всього, Flash розрізняє великі та малі літери)!

Є спосіб уникнути збереження шрифту, правда доведеться пожертвувати згладженими краями букв. Для цього потрібно вибрати Use Device Fonts, в опціях тексту. При цьому Flash буде зберігатися накреслення літер, а тільки характеристики і назва шрифту (на практиці, це всього кілька байт). При відтворенні буде використаний вказаний шрифт, або, якщо такого шрифту не виявиться в системі, Flash використовує найближчий по характеристикам шрифт.

Звідси висновки: великі обсяги тексту краще не зберігати в Flash, (а використовувати, наприклад, HTML) - Flash підходить більше для коротких написів, гасел і т.п .; намагатися використовувати менше різних шрифтів. Якщо вже дуже потрібно помістити велику кількість тексту в Flash, використовуйте опцію Use Device Fonts. Все це скоротить розмір створюваного файлу.

Очевидно, що використання звуку сильно збільшує розмір Flash-файлів. Звук теж піддається оптимізації в Flash.

У загальному випадку, на розмір звукових даних впливають частота дискретизації (sample rate) і кількість каналів (стерео, моно). Зрозуміло, що стерео звук буде займати в два рази більше місця, ніж моно, і що звук оцифрований з частотою дискретизації 44 kHz, рівно в стільки ж разів більше уривка з частотою 22 kHz. Частоту дискретизації щодо вихідної можна знизити, підвищувати її не має сенсу (краще від цього звук не стане).

Ще спосіб, скоротити витрати на звук - програвати один і той же фрагмент кілька разів. Наприклад, вам потрібен фрагмент звуків джунглів, довжиною 40 секунд. Ви можете взяти фрагмент, довжиною 10 секунд і повторити його кілька разів, при цьому будуть збережені тільки необхідні 10 секунд запису.

зображення

Так як Flash є векторної середовищем, по можливості слід використовувати векторну графіку. До того ж, растрова графіка при масштабуванні виглядає не дуже пристойно.

Якщо зображення не є фотографічним, має сенс перетворити його у векторний формат. В параметрах зображення, після його імпортування, можна вибрати тип компресії і подивитися, як воно буде виглядати.

Накладно і не виправдано створення в Flash анімації за допомогою растрових зображень. Для цього можна використовувати, скажімо, формат GIF.

Flash може генерувати звіт, в якому по байтам розписаний весь фільм. (Publish Settings -> Flash -> Generate size report). Для прикладу, ми розглянемо наступний мультик:

У цьому фільмі 70 кадрів. У звіті (див. Нижче) відображено кількість байт, потрібне для кожного кадру (Frame Bytes), і розмір фільму до цього кадру (Total Bytes). Виходячи з цих даних можна розрахувати необхідну швидкість лінії передачі, щоб Flash-фільм міг відображатися без затримок.

Слово "Optimized" і букви слова "Flash" є символами, причому на кожну букву цього слова відводиться два символу - один містить графіку, інший анімацію (рух вгору-вниз). Зауважте, що букви, використані в слові "Flash" не використовують шрифт (див. Кінець звіту - там немає шрифту Arial, яким це слово було написано). Ці букви були перетворені в "самостійну" графіком, після введення тексту (Modify-> Break Apart, Ctrl + B).

В кінці звіту містяться дані про шрифтах, звуці і зображеннях. Звук і імпортовані зображення відсутні в нашому прикладі, тому в звіті даних про них немає.

Ось як виглядає звіт:

Схожі статті