В. Дронов - Macromedia Flash Professional 8. Графика и анимация
Как мы помним из главы 12, трансформационная анимация может быть применена только к экземпляру, находящемуся на своем собственном слое. На первый взгляд, это серьезное ограничение: невозможно анимировать сразу два или более экземпляров. Но его легко преодолеть, если разнести эти экземпляры по нескольким слоям и анимировать их по отдельности (многослойная анимация).
Кроме того, для создания сложной анимации Flash предоставляет две разновидности так называемых специальных слоев, имеющих особое назначение. Это направляющие и маскирующие слои, и мы их также рассмотрим.
С помощью направляющего слоя можно заставить какой-либо экземпляр двигаться по сложной траектории. Делается это так: мы создаем слой, рисуем на нем линию, представляющую нужную нам траекторию, привязываем к ней этот экземпляр и создаем анимацию. Остальное, как и во многих других случаях, берет на себя Flash.
Маскирующий слой используется для того, чтобы частично скрыть лежащее под ним изображение, показав только его небольшую часть. Анимировав содержимое этого слоя, можно создать "световое пятно", "ползающее" по изображению и "высвечивающее" разные его части.
Многослойная анимация
Ну что ж, начнем с самого простого — с многослойной анимации, т. е. анимации, состоящей из нескольких анимированных элементов, находящихся на разных слоях.
Создание многослойной анимации
Создадим новый документ Flash и нарисуем на рабочем листе круг. Преобразуем его в графический образец и дадим ему имя Круг. В результате этих действий мы получим на рабочем листе экземпляр этого образца.
Теперь можно приступать к созданию анимации. Давайте заставим наш экземпляр двигаться по горизонтали, слева направо. Продолжительность анимации пусть составляет 10 кадров. Проверим готовую анимацию в действии и убедимся, что она работает.
Теперь давайте добавим на рабочий лист еще один экземпляр образца круг и заставим его двигаться по вертикали, сверху вниз. Для этого сначала создадим новый слой, а уже на него и поместим новый экземпляр. (О создании слоев см. главу 5.) Анимируем его и запустим воспроизведение готовой анимации. Вот и все.
Таким образом мы можем создавать сколько угодно слоев, помещать на них экземпляры и анимировать их. (Главное только — не переусердствовать, не то у зрителей зарябит в глазах. Но это так, шутка…)
Создание фоновых изображений
Очень часто бывает необходимо, чтобы анимированный элемент изображения располагался поверх какого-либо фонового изображения (фона). В частности, такие фоны часто применяются в художественных фильмах.
Как сделать фон во Flash? Очень просто!
Откроем документ, созданный нами чуть раньше, когда мы учились делать многослойную анимацию. Создадим в нем новый слой и поместим его ниже тех двух слоев, на которых находятся уже созданные нами анимированные элементы. Импортируем какое-либо большое растровое изображение и поместим его на этот слой.
А теперь очень важный момент. Единственный ключевой кадр, содержащий фоновое изображение, нужно растянуть так, чтобы его длина сравнялась с длиной анимации, которая его использует. Это нужно, чтобы созданный нами фон присутствовал на всех кадрах анимации.
Внимание!Не забывайте о том, что было сказано выше! Ключевой кадр, содержащий фон, должен быть достаточной длины, чтобы покрыть всю использующую этот фон анимацию.
Все! Если мы теперь запустим воспроизведение созданной ранее анимации, наши элементы будут двигаться на красивом графическом фоне. Неплохо, правда?
Разумеется, фоном может служить не только импортированное растровое изображение, но и любая векторная графика, нарисованная в самом Flash. Фон также может быть анимированным, но это уже, на взгляд автора, перебор.
Ускорение отображения фрагментов фона
Как говорилось выше, фон может содержать векторную графику, нарисованную средствами самого Flash. Также фон может включать экземпляры — графические или клипы. Вот о клипах (в смысле, экземплярах образцов-клипов), используемых для создания фона, мы и поговорим.
Клипы — замечательная штука. Мы можем применить к ним фильтры (см. главу 9), чтобы наше кино выглядело эффектнее. Но в таком случае возникнет одна проблема, о которой нужно поговорить.
Если фильм включает в себя множество анимированных фрагментов, проигрывателю Flash может не хватить процессорных ресурсов, чтобы отобразить анимацию плавно, без рывков. В самом деле, при выводе каждого кадра фильма ему придется извлечь из файла Shockwave/Flash описания каждого анимированного образца, вычислить его координаты и нарисовать его в той позиции, в которой он должен быть в данный момент. А ведь анимированные элементы могут перекрывать друг друга, быть полупрозрачными, обрабатываться с помощью фильтров и даже управляться сценариями ActionScript. И, кроме проигрывателя Flash, на компьютере могут выполняться другие программы, тоже требующие "внимания" со стороны процессора. Так что ничего нет удивительного в том, что воспроизводимая анимация будет постоянно дергаться, а то и застывать на несколько секунд.
Но Flash 8 предоставляет способ хоть как-то решить эту проблему. Он позволяет включить кэширование выбранных клипов в оперативной памяти компьютера. То есть проигрыватель Flash после считывания образцов-клипов из файла Shockwave/Flash, где хранится фильм, и помещения их экземпляров на рабочий лист поместит их также в оперативную память. Тогда, если ему понадобится нарисовать какой-либо клип в другой позиции, он возьмет его именно из оперативной памяти вместо того, чтобы снова лезть в файл Shockwave/Flash.
Преимущество у этого подхода одно, и оно очевидно — ускорение воспроизведения анимации. А вот недостатков несколько:
□ кэшироваться в оперативной памяти могут только клипы, не содержащие встроенной анимации (хотя такие клипы могут быть анимированы);
□ при кэшировании множества клипов сильно возрастает потребность в системных ресурсах;
□ проигрыватель Flash в любой момент может посчитать, что клип не должен кэшироваться (например, если он слишком велик или если не хватает оперативной памяти).
Включить кэширование клипа очень просто. Выделяем на рабочем листе нужный клип и обращаемся к панели Properties. В нижней ее части, прямо под раскрывающимся списком наложений, находится отключенный по умолчанию флажок Use runtime bitmap caching. Включаем этот флажок — и клип будет кэшироваться при выводе.
На заметкуСлово "bitmap" в подписи к этому флажку говорит о том, что клип кэшируется в растровом виде. Именно за счет этого и достигается ускорение его вывода на экран.
Использование специальных слоев
Наш разговор о многослойной анимации получился коротким. В самом деле, о чем там особо рассказывать!.. Все и так ясно.
А теперь поговорим о специальных слоях. Это слои-направляющие и маскирующие слои.
Слои-направляющие
При создании анимации часто бывает нужно, чтобы какой-либо элемент совершал не прямолинейное перемещение, а двигался по достаточно сложному пути (или, как говорят аниматоры, траектории). Эта траектория может быть кривой или ломаной линией, окружностью или сложным контуром какой-то фигуры.
Средствами, изученными в главе 12, добиться этого невозможно или слишком трудоемко. Поэтому специально для таких случаев Flash предлагает особую разновидность специальных слоев — слои-направляющие. И сейчас мы выясним, как их создать и как использовать.
Создадим новый документ Flash, поместим на рабочий лист прямоугольник и преобразуем его в образец по имени прямоугольник. После этого создадим простейшую анимацию, перемещающую экземпляр этого образца слева направо по рабочему листу. Как это сделать, мы уже знаем.
Теперь нужно заставить этот прямоугольник двигаться по какой-либо траектории. Для этого мы создадим слой — направляющую, нарисуем на нем траекторию и привяжем к ней наш прямоугольник.
Чтобы создать слой — направляющую и привязать к нему анимированный элемент, сначала выделим в списке слоев панели Timeline тот, что содержит анимированный элемент. Далее выберем пункт Motion Guide подменю Timeline меню Insert. Также можно выбрать пункт Add Motion Guide контекстного меню выделенного слоя. Созданный нами слой — направляющая появится над выделенным слоем (рис. 14.1) и будет иметь имя вида Guide: <имя выделенного слоя>. Также он будет помечен особой пиктограммой.