Pull to refresh

Делаем ссылки во flash-баннере, не имея исходников

Reading time 2 min
Views 3.2K

Зачем?



Вам никогда не приходила верстка с flash-элементами, которые должны быть ссылками на внешние или внутренние ресурсы, но на деле таковыми не являющимися? При этом, когда вы не flash-разработчик и Flash IDE под рукой нет (а то и операционная система, в которой вы работаете, эту самую Flash IDE не поддерживает) — это становится небольшим затруднением. Можно, конечно, пнуть верстальщика, чтобы он все поправил, но это требует времени, а значит денег. Кроме того, пинать его каждый раз когда URL поменяется не самая лучшая идея.

На помощь приходят swftools



На сайте разработчика можно узнать, что это набор консольных утилит для работы с .swf файлами. Утилиты эти хорошие и разные (например, компилятор ActionScript не умеет компилировать Box2D, то есть не всякий синтаксис ActionScript понимает), но с нашей задачей они справятся.
Утилиты, к слову говоря, умеют:
  • конвертировать в swf из pdf (PDF2SWF)
  • вытаскивать из swf-роликов контент (SWFDump, SWFStrings, SWFBBox, SWFExtract )
  • конвертировать в swf некоторые графические/аудио/видео форматы файлов (JPEG2SWF, PNG2SWF, GIF2SWF, WAV2SWF, AVI2SWF)
  • импортировать в swf-ролик шрифты TTF, Type1 (Font2SWF)
  • компилировать код ActionScript3 с определенными ограничениями


Хорошо, а ссылки в баннерах как сделать?



Здесь нам поможет еще одна консольная программка из набора swftools под названием swfc. Она позволяет собирать flash-ролики на основе описания их специальным языком разметки.

Предположим, у нас есть баннер размером 980 на 136 пиксел в файле banner.swf и мы хотим, чтобы при его показе в браузере на нашем сайте он ссылался на главную страницу хабра.
Создадим текстовый файл movie.sc со следующей разметкой:

#название файла с роликом, его размеры и скорость воспроизведения
.flash filename="banner_with_link.swf" bbox=980x136 fps=12

#наш баннер
.swf banner "banner.swf"
.put banner

#поверх него прозрачный прямоугольник
.box rect width=980 height=136 color=red fill=#FFFFFF00 line=0

#собираем прямоугольник в сущность "кнопка"
.button mybutton
    .show rect as=shape
    #по клику на кнопку происходит переход по указанной ссылке
    .on_press:
        getURL('http://habrahabr.ru/', '_top');
    .end
.end
.put mybutton
.end


Осталось собрать из этого файла swf-ролик при помощи утилиты swfc:
swfc movie.sc
В итоге сборки мы получим в этой же директории файл banner_with_link.swf с нужным нам функционалом.

И что?



Собственно, задача выполнена, но на этом можно не останавливаться. Ведь сборка не обязательно должна происходить на вашей машине — достаточно установить эту утилитку на сервер и баннеры можно будет собирать динамически. При правильном кешировании это практически никак не скажется на производительности. В разделе References на сайте разработчика имеются примеры проектов, работающих по такой технологии. А после изучения материалов wiki документации и открытых исходных кодов проекта у вас возникнет множество других замечательных идей по его использованию. Дерзайте, и на забывайте писать об этом на хабре!
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+11
Comments 3
Comments Comments 3

Articles