Часть 1

Для любого программного пакета справедливо:

как только пользователь полностью изучит все его возможности,

появится новая версия с новыми функциями.

Из компьютерных афоризмов

Можно смело утверждать: нет в данный момент лучшего способа получить большую свободу для творчества, кроме как освоить замечательное творение компании Macromedia — программу Flash. Тут вы можете быть художником, аниматором, веб-мастером и программистом одновременно. Хотите — рисуйте мультик про собственного директора, а хотите — пишите игру или создавайте домашнюю страницу. К сожалению, большинство пользователей знает о возможностях Flash совсем немного: что с помощью этой программы сделана Масяня или же назойливый баннер в «шапке» любимого сайта. В этой статье мы расскажем о том, что может Flash, — и быть может, она окажется именно тем инструментом, который вы так давно искали.

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

Рис. 1. Интерфейс программы FutureSplash Animator. Уже в ней существовали такие ключевые для современных версий Flash элементы, как временная шкала, библиотека и панель инструментов (сравните с рис. 2 и 6)

Помимо экскурса в историю рождения и становления Flash речь пойдет о богатстве мультимедийных возможностей этой среды, принципах и методах успешного ее освоения. Мы вместе разберем ключевые особенности встроенных языков ActionScript и JSFL. Не останутся без внимания и компоненты. Найдут свое отражение проблемы эргономики (usability), авторских прав на Flash-клипы и декомпиляции последних, особое внимание будет уделено проблемам безопасности. В качестве приложения к теме вы познакомитесь с хронологией становления Flash, списком полезных ресурсов Интернета, ответами на частые вопросы начинающих «флэшеров», а также с обзором рекомендуемой литературы.

Кроме того, авторы намерены обсудить сенсационное событие, произошедшее в компьютерном мире 18 апреля 2005 г., — имеется в виду поглощение корпорацией Adobe Systems компании Macromedia. Расскажем также об особенностях загрузки Flash-фильмов, принципах организации сайтов, возможностях взаимодействия с сервером по протоколам HTTP и TCP/IP, инструментах для создания комплексных интернет-приложений.

История Flash

Рис. 2. Внешний вид среды Flash MX 2004

Середина 1990-х... Золотое время мирового экономического застоя, которое если и будет упомянуто в летописях, то только благодаря выходу новой версии Windows. Компьютеры на базе Intel-486 все еще являются вершиной технологических достижений мира ПК, а умами «сетян» правит FIDO — скромный предвестник эпохи Интернета. Про саму Глобальную сеть ходят самые невероятные слухи: видели ее в нашей стране редкие счастливчики. Впрочем, и смотреть было особенно не на что: пристанище ученых и студентов-программистов, Интернет являл собой нескончаемое море текста с редкими островками картинок. Профессия «веб-дизайнер» едва зарождается и подразумевает не столько создание концептуальных интерфейсов, сколько борьбу с «сырыми» браузерами и межплатформной несовместимостью. Развитие технологий соответствует стадии нижнего палеолита в эволюции человечества, отсутствуют стандарты и компетентные институты для их выработки.

Однако вскоре все меняется. Мир охватывает мода на новый наркотик под названием Интернет. Все больше и больше людей жаждет ощутить иллюзию свободы, мира без границ, догм и цензуры. Сеть становится массовым явлением. Вместе с потоком людей в нее хлынул поток денег, материализовавшись в виде баннеров, магазинов и платных порносайтов. Возникает конкуренция и, как следствие, — реклама. Чтобы преуспеть, нужно выделиться. Обывателю необходимо шоу, его же требуют рекламодатели. Однако, используя только HTML и анимированные GIF-изображения, трудно создать что-то способное поразить воображение. Есть, правда, еще и Java, но профессиональное программирование — слишком дорогое удовольствие... В результате даже лучшие коммерческие сайты выглядели по современным меркам довольно убого — чтобы в этом убедиться, загляните в «Архив Интернета» (http://archive.org).

Рис. 3. При должном приложении ума и фантазии Flash способна приносить многие десятки и сотни тысяч долларов дохода. Яркий пример — поражающие своим цинизмом, но жутко смешные и популярные мультиплика ционные фильмы из серии Happy Tree Friends (http://mondo media.com)

Чувствуя требование рынка, компания Macromedia приняла, возможно, самое верное за свою историю решение — сделать ставку на векторную анимацию. Для этого она покупает компанию Future Animation, разработавшую в 1995 г. небольшую (всего 3 Мбайт), но вполне революционную для своего времени программу FutureSplash Animator, предназначавшуюся для создания мультфильмов на домашнем ПК. Расширив ее рядом специфичных для Сети возможностей, Macromedia выпускает вскоре новый продукт под названием Flash (англ. «вспышка»).

Несмотря на название, Flash первой и второй версий не смогла ослепить разработчиков своими возможностями. И лишь третье ее издание обрело заслуженное признание, став явлением в мире мультимедийного Интернета. Flash 3 могла создавать легкие векторные анимации, кнопки и интерактивные элементы. Причем, чтобы ее использовать, не требовалось быть ни профессиональным мультипликатором, ни опытным программистом. Эта особенность плюс не имевшие аналогов возможности привлекли в сообщество Flash тысячи талантливых разработчиков. В результате Интернет преобразился, в один год превратившись из статичной газеты в яркое и динамичное шоу.

Последующие версии Flash характеризуются появлением и бурным развитием ActionScript — сценарного языка программы. Началось создание с его помощью интерактивных роликов, игр и даже целых сайтов. Появилась возможность работать с видео, в том числе и потоковым. Возник уникальный, не имеющий аналогов симбиоз графики, анимации и программирования в рамках одной системы, который известен нам как Flash от Macromedia.

Последняя, седьмая версия Flash стала во многом революционной. Во-первых, в ней появился новый сценарный язык ActionScript 2.0, использующий схожий с Java синтаксис объектно-ориентированного программирования (объектная модель ActionScript 1.0 такая же, как и у JavaScript). Во-вторых, в среду разработки Flash был внедрен сценарный язык JSFL (JavaScript Flash Language), предоставивший возможность создавать собственные инструменты, команды и панели эффектов. В-третьих, значительно улучшились средства компонентной разработки, позволяющие многократно использовать собственные и чужие решения.

Что можно сделать с помощью Flash?

Рис. 4. Красивые интерактивные заставки на сайтах помогают компании выделиться на фоне конкурентов

Все зависит от того, владеете ли вы основами ActionScript. Не используя язык программирования, вы будете способны создавать мультфильмы — и больше ничего.

Чаще всего рядовому пользователю Интернета Flash-фильмы встречаются в виде анимированных или интерактивных баннеров — тот минимум, который предлагает Flash. Используя же ActionScript, можно создавать целые сайты — хотя это практикуется по большей части студиями веб-дизайна. В основном Flash применяется для создания отдельных элементов интерфейса веб-страниц: анимированные меню, заставки, галереи, изумительные эффекты.

В нашей стране области применения Flash несколько отличаются от тех, что популярны на Западе. Так, если в США Flash — это прежде всего инструмент, применяемый при разработке сайтов, то у нас такое использование этой технологии встретишь редко. По причине тотального распространения отечественного пиратства Flash — это игрушка. Тысячи и тысячи любителей используют ее для создания собственных мультиков, эффектов и игр.

Начиная с Flash 6 появились возможности по проигрыванию потокового видео и аудио, в том числе и транслируемых камерой и микрофоном на компьютере пользователя. Это позволяет создавать с помощью Flash видеочаты, сетевые конференции, новостные службы.

Flash также активно используется при разработке презентаций, интерфейсов компакт-дисков, заставок Windows и даже математических моделей. Особая область применения Flash — разработка безопасных сетевых приложений, например, казино или приложений для совершения операций на бирже FOREX.

Flash-плеер и SWF-формат

Чтобы решить проблему технологических ограничений, браузерной и кросс-платформенной несовместимости, Macromedia пошла на достаточно смелый шаг. Для просмотра Flash-элементов пользователь должен был загрузить небольшой (около 100 Кбайт) дополнительный модуль (plugin). Проигрыватель для последней версии программы (Flash MX 2004) занимает уже около 900 Кбайт. Был риск, что пользователи не захотят этого делать. Однако время показало, что это не так. Уже к 1999 г. SWF-формат (собственный формат Flash-плеера) стал общепризнанным стандартом распространения анимации в Интернете, и по этой причине вначале Netscape, а затем и Microsoft включили Flash-плеер в четвертые версии своих браузеров. В настоящее время, исходя из официальной статистики Macromedia, проигрыватель SWF-фильмов имеется на 98% компьютеров, подключенных к Интернету.

Есть две разновидности Flash-плеера: встраиваемое в браузер приложение и так называемый автономный (standalone) плеер, представляющий собой независимое приложение. Как самостоятельная программа автономный плеер используется главным образом Flash-разработчиками при тестировании проектов. Простые же пользователи обычно сталкиваются с автономным плеером в форме так называемых проекторов (projector). Проектор — это приложение, представляющее собой слитые в один файл автономный плеер и SWF-фильм.

Существует специальный Flash-плеер для карманных компьютеров и сотовых телефонов — Flash Lite, и написан он для таких операционных систем, популярных в мире КПК и смартфонов, как Pocket PC, Palm OS, Symbian.

Рис. 5. Внешний вид значков различных типов файлов, относящихся к Macromedia Flash

Спецификация SWF-формата (от Small Web Format) является открытой: написано множество программ, которые позволяют создавать фильмы с таким расширением и без использования Flash. Однако их назначение обычно довольно узко (например, рисование заставок, баннеров, кнопок), и они не способны заменить ее полностью. Развитие альтернативных продуктов сдерживает то, что код самого Flash-плеера, как и вспомогательные форматы, является закрытым. Впрочем, монополизм Macromedia изрядно компенсируется ее способностью прислушиваться к мнению пользователей, что помогает значительно совершенствовать Flash от версии к версии.

Форматы Flash

Основных Flash-форматов два:

  • FLA. Собственный формат среды Macromedia Flash. В нем хранятся незаконченные или подлежащие редактированию проекты.
  • SWF. Формат Macromedia Flash Player. В него компилируются FLA-файлы по завершении разработки. Более компактен по сравнению с последними, так как значительный объем служебной информации в SWF-файл не включается. По причине отбрасывания при компиляции значительной части нужных для среды разработки, но не используемых плеером сведений, однозначно восстановить FLA-файл на основании соответствующего SWF-файла невозможно.

Помимо основных Flash-форматов существует с десяток форматов вспомогательных:

  • AS (текстовый файл с кодом ActionScript);
  • JSFL (файл с кодом сценарного языка JSFL);
  • FLP (файл формата XML, объединяющий файлы различных типов, которые относятся к одному проекту) и ряд других.

Оптимизация

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

Рис. 6. Важнейшими элементами Flash являются библиотека (Library) и временная шкала (Timeline). В библиотеке хранятся использующиеся объекты: клипы, кнопки, звуки, шрифты, графика. Временная шкала совмещает в себе такие понятия классической анимации, как кадры и кальки

При грамотном использовании технологии вполне реально создать пятиминутный ролик размером 500—700 Кбайт. Небольшой же сайт при объеме в 50—80 Кбайт — тоже не из области фантастики. Главное — четко понимать, где можно сэкономить, а где нет.

Главная причина малого размера Flash-фильмов кроется в использовании для рисования объектов не растровой, а векторной графики. Их различие известно буквально каждому: растровая графика представляет собой набор пикселов, векторная — содержит описание линий, из которых состоит изображение. Общая рекомендация: Flash-элементы нужно создавать максимально простыми и стилизованными, минимизируя количество линий и сглаживая их.

Второй кит, на котором зиждется оптимизация SWF-фильмов, — это так называемые символы (Symbols). Символы — неизменные графические элементы, которые, будучи один раз сохранены в библиотеке, могут быть использованы в виде неограниченного числа экземпляров без заметного увеличения размера файла.

Можно значительно уменьшить размер конечного файла, используя программирование. Например, нарисованная вручную спираль из 30 витков будет занимать около 5 Кбайт. С помощью ActionScript точно такой же объект можно получить при размере фильма всего в 300 байт! Обычно программирование стоит применять тогда, когда необходимое действие может быть легко описано математическими закономерностями.

Начиная с Flash MX SWF-формат является сжатым. Для его сжатия применяется арифметическое кодирование, что дает выигрыш (в зависимости от содержимого фильма) порядка 20—30%.

Flash как графический редактор

Рис. 7. Богатство возможностей Flash вкупе с ухищрениями разработчиков привело к рождению изумительных 3D-игр, не уступающих по качеству проработки персонажей, детализации и динамики игрового процесса аналогам, сделанным в Macromedia Shockwave (http://www.spiritonin. com/capoeirafighter)

Знаете ли вы, что отличает рисунок аниматора-профессионала от любительской поделки? Прежде всего твердость линии. Попробуйте нарисовать, например, яблоко и внимательно изучите образующие его линии. Почти наверняка вы увидите, что они как бы дрожат, из-за чего рисунок выглядит шероховатым и неаккуратным. Провести же ровную линию с помощью мыши или графического планшета намного сложнее, чем карандашом. Однако описанной проблемы не существует во Flash благодаря возможностям автоматического сглаживания и распознавания образов. Это означает, что если вы нарисуете что-то хотя бы отдаленно напоминающее квадрат или круг, после отпускания кнопки мыши получится необходимая фигура. Линия выйдет гладкой, даже если проведенная вами траектория далека от идеала. Благодаря этому рисовать во Flash вы будете гораздо лучше, чем на бумаге, и для создания вполне пристойной мультипликации вам совсем не обязательно иметь развитые художественные задатки. Куда важнее фантазия и обостренная тяга к творчеству.

Создание анимации во Flash

Рис. 8. Анимация летящей птицы, созданная с использованием смешанной техники: взмахи крыльями — перекладка, перемещение — автоматическая трансформация движения (Motion Tween) с применением кривой траектории (Guide)

Как создается классическая анимация? Ведущий аниматор рисует ключевые, наиболее важные кадры сцены. Затем рядовые мультипликаторы заполняют разницу между ними таким образом, чтобы каждый последующий кадр слегка отличался от предыдущего. Чем больше будет таких промежуточных кадров, тем более плавным и естественным получится движение. Иногда, чтобы имитировать, например, перемещение героя вдоль какого-то пейзажа, достаточно просто передвигать кальку с соответствующим изображением. Да и сам персонаж может быть оживлен простой перекладкой его составных частей. В общем, различных техник много, и использование той или иной из них бывает обусловлено как решаемыми задачами, так и во многом бюджетом фильма. Принципы изготовления мультипликации во Flash очень близки к принятым в «настоящей» анимации.

Во Flash можно выделить пять различных подходов к созданию мультипликации:

  • Покадровая анимация. Каждый кадр фильма рисуется отдельно.
  • Перекладка. Графические объекты переводятся в символы, а затем анимация создается за счет изменения их положения, размеров или угла поворота.
  • Анимация трансформации движения (Motion Tween). Вы задаете только начальное и конечное положение объекта, его размеры, время движения, траекторию и прочие параметры — а все его промежуточные состояния система просчитывает самостоятельно.
  • Анимация трансформации формы (морфинг). Используется тогда, когда один графический объект мультфильма должен плавно видоизмениться и превратиться в другой. Вы задаете начальную и конечную формы, а промежуточные кадры будут заполнены автоматически.
  • Программная анимация. Поведение объекта описывается с помощью сценария ActionScript.

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

Flash — это просто инструмент в ваших руках. Что вы сможете, используя его, сделать, зависит только от вас. Помните: машины не способны творить — они умеют лишь очень быстро считать, да и то не всегда. Не ленитесь думать, фантазировать, а главное — учиться. Наберитесь решимости и попробуйте освоить замечательную программу Flash от Macromedia. И мы уверены: вы никогда не пожалеете о потраченном времени. Итак, вперед!

Продолжение следует.

Полный вариант статьи см. на «Мир ПК-диске». В нем более детально рассказывается об истории и функциональных возможностях Flash.

Юрий Стрельченко (dot@solo.by, yuri.strelchenko@gmail.com) — автор сотен статей, аналитических обзоров и заметок в компьютерных изданиях России и Белоруссии. Специализируется в области истории компьютерных наук. Постоянный автор статей для журнала «Мир ПК» и ведущий ряда разделов CD-приложения «Мир ПК-диск».

Дмитрий Гурский (diis_ignotis@tut.by) — программист и автор компьютерной литературы. Широкую известность в русскоязычном Flash-сообществе ему принес бестселлер «ActionScript 2.0: программирование во Flash MX 2004». Является также автором книг «Flash MX 2004 и ActionScript 2.0: обучение на примерах», «Вычисления в Mathcad» и «Mathcad для студентов и школьников». Постоянный автор CD-приложения «Мир ПК-диск».