Описание моего опыта переезда с Flash на Animate CC и создания баннеров во всемогущем формате HTML5. Много картинок под катом

Немного исторического экскурса и терминов


Лично я сам знаком с Flash гораздо больше 10 лет и немного представляю, как работает эта технология «изнутри».

Примерно столько же лет я верстаю сайты, в том числе на «современном» языке HTML5, который, как говорят, умеет всё. Нет, реально, иногда упоротые дизайнеры присылали такие интерфейсы, которых в природе не существовало, их нужно было выдумать, прикрываясь фразой «на HTML5 же можно написать всё!».

Я не претендую на особую художественную ценность моих творений, но количество нарисованных мной баннеров давно перевалило за тысячу, и я продолжаю их рисовать почти каждый день.

За последние 5 лет flash не пинал только ленивый, причем, не особо разбираясь в вопросе. Лично я никогда не видел ни тормозов, ни дырявости, а уж про самое первое утверждение от Стива Джобса про то, что «Flash не заточен под палец» — это и вовсе смешно. Самая очевидная причина противостояния Apple против флеша на айфонах лежит на поверхности, но сейчас не об этом.

Приближаемся к развязке терминологии. HTML — это язык разметки текста и расположения элементов на странице. Он не умеет выполнять никакие действия сам по себе. Под «новшествами HTML5» вместо Flash обычно понимают: проигрывание видео без Flash, анимации без Flash, мультизагрузка файлов без Flash и некоторые другие вещи.

Несмотря на дифирамбы, звучащие отовсюду, до сих пор не появилось ни одного вменяемого редактора анимации на «всемогущем» HTML5, пока Adobe не перелицевала Flash CC в Animate CC, добавив, по сути, только экспорт в HTML5.

Интерфейс


Сам интерфейс Animate CC вообще не отличается от Flash, в отличие от Edge Animate, который был дико непривычен. Больше сказать особо нечего, и я вообще не заметил разницы с CS6, которым я пользовался давно. Для баннеров не нужен AS3, а это была последняя версия, поддерживающая AS2. Конвертер Swiffy, который сделала Google, дружил только с AS2.

* AS2,3 — встроенный во Flash язык программирования Action Script, который позволяет делать всю неанимационную составляющую ролика — чтобы кнопки нажимались, чтобы на нужных кадрах ролик вставал на паузу, для того, чтобы информацию могли прочитать, чтобы запускались интерактивные сценарии взаимодействия с роликом. На самом деле, это достаточно мощный язык, и я использую лишь 0,000001% его функционала.

Движок отрисовки


Естественно, сами по себе объекты внутри ролика двигаться не могут, для этого нужно, чтобы их двигал, показывал и скрывал какой-то движок. В Animate CC для проектов формата HTML5 Canvas используется CreateJS, который приветствует каждый новый проект замечательным предупреждением

ПРЕДУПРЕЖДЕНИЯ:
Номера кадров в EaselJS начинаются с 0, а не с 1. В частности, это влияет на методы gotoAndStop и gotoAndPlay.


Приятно, что хоть предупредили. Видимо, это нереальная задача — отнимать по единичке от того кадра, на который нужно перейти.

Таймлайн и рабочая область


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



Теперь перейдем к тому, чем я постоянно пользуюсь:

Стандартные фильтры во Flash


Фильтры — одна из весьма частых составляющих любых баннеров, они позволяют очень быстро добиться нужного результата. Я рассмотрю 3 фильтра, которыми я раньше пользовался крайне часто. Во флеше фильтры — часть стандарта, и на моих работах они не оказывали какого-либо влияния на производительность, да и не могли в-принципе. Здесь и далее я буду использовать экспорт в GIF для понимания разницы

Тень


Тень — один из самых простых вариантов сделать части баннера объемнее и акцентировать внимание на нужных блоках. Естественно, я взял чрезмерно сильную тень, чтобы проиллюстрировать разницу
Сравниваю:
Flash CreateJS

Да, анимация тени невозможна. Более того, если ролик длиннее того, что я представил для теста, тень превращается в неизвестно что.
Здесь также стоит упомянуть, что в редакторе и готовом html5 тени (да и вообще все эффекты) выглядят сильно разными.
Редактор Результат

При экспорте в трейсе можно увидеть такую надпись:
Фильтры тени и свечения используют очень много системных ресурсов, кроме того, поддерживаются не все параметры. (4)
Ну спасибо, что хоть предупредили…

Производительность баннера с тенями оставляет желать лучшего, ну они же предупреждали. Стерев тени с этих подложек, я сократил нагрузку до 40%. Флеш все это рисовал с 23% загрузки вместе с тенями, разумеется



Свечение


Один из самых простых способов выделить текст на пестром фоне — добавить ему обводку, это просто делается с помощью свечения с большим процентом интенсивности.
Flash CreateJS

В это самое время в редакторе все так же, «Видимость ноль, иду по приборам»:



Есть один возможный вариант решения данной проблемы, если нужно — я им поделюсь, подложки под буквы используются крайне часто и без них просто не жить.

Помимо этого, свечение — это не только обводка букв, но результат намекает, что его не будет
Flash CreateJS В редакторе


Размытие


Без комментариев. Размытие доступно только для статичных объектов, так что использовать этот фильтр для появления текстов невозможно
Flash CreateJS


Как вышеперечисленные глюки могут существовать при повсеместном проникновении тех же самых SVG-фильтров и фильтров в CSS — я не представляю.

Проблемы экспорта и упаковки


Все привыкли к тому, что ролик во флеше — это самодостаточный файл. Экспорт в HTML5 порождает кучку файлов, вместо одного. Проект Swiffy, придуманный Google для конвертации SWF в HTML паковал всё внутрь одного HTML-файла. Видимо, такая задача оказалась непосильной ношей для создателей Animate CC. Подробную статью по поводу засовывания «всего» внутрь одного файла для Doubleclick можно прочесть здесь. Я сделал свой конвертер на лету, сгородив конструкцию из пары функций на php, но она далека не то, что до идеала — даже до черновика. Мои задачи решает — и ладно.

Резиновые баннеры


По умолчанию Animate вроде как поддерживает «резиновость» баннеров, но обычно под резиновыми баннерами имеются в виду те, которые тянутся по горизонтали, а не пропорционально по обоим осям. В шаблоне экспорта это называется responsive scaling, и в случае с баннерами, тянущимися только по оси X это приводило к забавным глюкам, пока я его не вырезал из шаблона



Вообще, можно вообще отказаться от идеи растягивания баннера, просто взять максимальный размер баннерного места, а ширину ролика указать равную минимальному размеру баннерного места и обрезать часть с помощью overflow: hidden, потом центрировать элемент CANVAS (указав его ширину равной максимальному размеру баннерного места) по горизонтали внутри ссылки, занимающей 100% ширины, здесь даже немного проще, чем было во FLASH и не требует никаких дополнительных скриптов внутри ролика, только css.


Итого


Жить можно, пользоваться можно, тормоза терпеть — нельзя. Для моего основного клиента по субподряду было введено ограничение — не больше 5 сцен на один баннер, иначе все начинает дико тормозить на большом новостном сайте с кучей баннерных мест. Flash очень давно и крайне быстро отрисовывается видеокартой любого пошиба, а Священный Грааль в виде магических аббревиатур HTML5 и CSS3 пока что сделан из папье-маше в плане анимации и интерактивных элементов. В том числе, на мобильных девайсах, ради которых Flash якобы и хоронят, производительность подобного рода роликов вызывает серьезные сомнения. Еще ни один стандарт порвут, пока flash окончательно похоронят.
Поделиться с друзьями
-->

Комментарии (11)


  1. alexvoz
    16.09.2016 13:51
    +1

    По своему опыту перехода с flash на html5 в этом редакторе:
    — нет режимов наложения (blending) кроме режима add
    — фильтров практически нет, во всяком случае чаще не отображаются.
    — круговые градиенты не могут быть овальными, нельзя растягивать шейп с круговым градиентом непропорционально.
    — программирование интерактива превратилось в ад — нет ни нормальной справки, ни туториалов. не говоря уже об отсутствии подсветки синтаксиса и хоть какого нибудь дебагера для кода.
    — использование canvas не дает никаких преимуществ, хотя другие фреймфорки позволяют и фильтры применять, и режимы наложения.

    Как гугл мог конвертировать flash баннеры в html с практически полным сохранением эффектов и большим количеством функционала? Почему он не выпустил какой нибудь фреймфорк или инструмент для анимации? (google web design даже не стоит вспоминать).

    И самое печальное — что лучшего инструмента для анимации пока нет. Или я не знаю о нем. Можно конечно «нативно» разрабатывать но время разработки тогда увеличивается в разы, что слишком дорого для обычных баннеров.

    p.s. экспорт во html5 появился еще в flash cc 2014 (с версией могу напутать) и в animate cc особо не изменился.


    1. sashabeep
      16.09.2016 13:55

      Про экспорт не мог знать, тут ничего не скажу, я пользовался CS6, пока Swiffy был живой.

      Хелпак CreateJS лично для меня непонятен чуть менее, чем полностью. Похож на автодокументирование и я не понял, как им пользоваться. Но недавно прислали баннер, который просто состоит из картинок и верстки и всё это двигается голым CreateJS и даже было понятно что за что отвечает. Но ни настолько, чтобы отказаться от флеша — делать такое с нуля крайне медленно, даже для тех 3 очень простых сцен, что в нем были


    1. Lsh
      17.09.2016 01:45

      А нет никакой альтернативы Swiffy? Очень удобно было. Может написать петицию гуглу, чтобы открыли исходники? Хотя, наверное они не согласятся, всяко там будут проблемы с авторскими правами.


      1. alexvoz
        17.09.2016 09:24

        Думаю там такие костыли и велосипеды были применены, что гугл никогда не откроет исходники и похоронит навсегда, что бы не позорится. Создавалась срочная временная альтернатива, и можно только представить что там было.
        Алтернатив пока не находил, быть может кто-то когда-то разберет хотя бы движок, который подключался к файлу и что то создаст на подобии.
        Была еще какая-то самописная IDE для анимации в html5, даже статьи ее автора были на хабре, но ее название напрочь вышибло из головы. Интересно, чего же все таки добился автор.


  1. Zergos_Z
    16.09.2016 14:04
    +3

    Я конечно не эксперт по flash, но как человек хорошо знающий возможности CSS3 и JS, могу с уверенностью сказать, что проблема исключительно в неправильном экспорте. Все то, что описал автор можно написать на html и css в несколько строчек, оно будет работать быстро, и не пожирая тонны ресурсов. Тень в CSS3 очень гибкая и настраиваемая, как и все другие эффекты, которые описал автор. Проблема не в «корявом» HTML5 и CSS3, а как всегда, в криворуких программистах из Adobe.


    1. sashabeep
      16.09.2016 14:07
      +1

      Я прекрасно вас понимаю, я тоже человек, хорошо знающий возможности CSS и JS, речи и не шло о корявости эффектов, я же написал внизу про CSS фильтры и тд — всё это давно и достаточно дешево делается. Но видимо, не в CreateJS


  1. digital23
    16.09.2016 19:24
    +1

    Полностью перешел на Animate с июля (когда гугл отключил Swiffy) — проще жить не стало явно.

    Тот же Swiffy после конвертации всё отлично сохранял и ничего не тормозило. Скорее всего, Adobe запилит скоро всё это, а этот Animate делался экстренно в связи с действиями гугла. Помимо фильтров не поддерживаются так же «Цветовые эффекты» (кроме альфы), т.е. больше нельзя быстренько изменить цвет мувиклипа или шейпа
    3) Вы скажете? Да как же, есть же анимация формы и движения там… для шейпов. Но вот тут есть нюанс — вес баннера увеличивается очень значительно, чего не происходило во Flash
    4) Маска работает не очень


  1. RubaXa
    16.09.2016 22:53
    +3

    я сократил нагрузку до 40%. Флеш все это рисовал с 23% загрузки вместе с тенями, разумеется

    Радость-то какая, всего 40-23% на сранный баннер, спасибо вам большое.


  1. edd_k
    16.09.2016 23:05
    +1

    Вы вот сейчас красочно и подробно описали, почему флеш — зло даже если бы не был настолько дыряв. Вот хотя бы из-за вашей (и заказчика) тяги к переизбытку анимации в «куче баннерных мест». А ведь АдБлок не всегда может спасти от результатов вашей деятельности.

    Основные неудобства испытывает потребитель. Даже когда оно на флеше. А вы за свои неудобства вознаграждение получаете. Так что, постеснялись бы жаловаться. Может научитесь привлекать внимание без анимации теней и проявления текстов.


  1. vanyatwo
    16.09.2016 23:25

    Баннеры можно делать по-другому.
    Illustrator => SVG => CSS3 (transition & animation) — при должном скилле у вас будут крутые кросс-браузерные баннеры.


  1. immaculate
    17.09.2016 10:10

    Ой, ну надо же, плохо стали работать все эти тупые мигающие отвлекающие, основное назначение которых — вводить пользователя в заблуждение. Я не знаю, без рекламы может быть мир существовать не может, но как раздражала до появления AdBlock вся эта мигающая и порой орущая каша. И из всех показанных баннеров ни один не показал правды ведь. В основном, рекламируется всякая дрянь, потому что без рекламы ее бы и в голову никому не пришло купить.

    А flash, тут я предвзят, всегда плохо работал. Не знаю, как на Windows, а в Linux, геморрой начинался еще на стадии установки. Его было сложно установить, куча каких-то ручных действий по эзотерическим инструкциям. Затем, он всегда в Linux работал медленно, все эти банеры отжирали огромное количество CPU и тормозили. А хуже всего, что он постоянно ронял браузер. Потом его изолировали и просто стало появляться надоедливое предупреждение: «Опять упал flash-плагин, вам надо перезапустить браузер». После того, как это предупреждение намозолило мне глаза, удалил Flash окончательно без всяких сожалений.