-Метки

corel corel paintshop pro Взаимоотношения аватары аксессуары анимация аппликации бесплатно бисероплетение бродилка видео вязание генераторы графика грибы декор дети детские стихи дизайнерские штуки для блога для текста документы и выплаты духи женщина загадки сознания заработок здоровье зоны фэн-шуй игрушки интернет кисти кнопки коллаж колыбельные комбинезон компьютер косметика красота кулинария линеечки любовь макрос мастер-класс мода мои народные рецепты начинающим новогодние костюмы новый год о прививках оформление оформление блогов плагин платье полезная информация полезные сайты потешки поэтапно праздник программы психология рабочий стол развитие деток развлечение детям рамочка рамочник редакторы рецепты рецепты для деток рукоделие рыба салаты самым маленьким своими руками скачать скачивание скрап-наборы слингобусы советы советы родителям соус спицами справочник статьи о рисовании творчество творчество с детками торт украшения урокам по flash уроки уроки рисования установка файлы фен - шуй фильтры и плагины фоны фото фотография фотошоп шитье

 -Рубрики

 -Приложения

  • Перейти к приложению Кнопки рейтинга «Яндекс.блоги» Кнопки рейтинга «Яндекс.блоги»Добавляет кнопки рейтинга яндекса в профиль. Плюс еще скоро появятся графики изменения рейтинга за месяц
  • Перейти к приложению Ваш IP адрес Ваш IP адресПоказывает ваш ип адрес.
  • Перейти к приложению Стена СтенаСтена: мини-гостевая книга, позволяет посетителям Вашего дневника оставлять Вам сообщения. Для того, чтобы сообщения появились у Вас в профиле необходимо зайти на свою стену и нажать кнопку "Обновить
  • ТоррНАДО - торрент-трекер для блоговТоррНАДО - торрент-трекер для блогов
  • Перейти к приложению Открытки ОткрыткиПерерожденный каталог открыток на все случаи жизни

 -Цитатник

Панель *Материалы*в Корел - (0)

Панель *Материалы*в Корел ПОДСКАЗКИ НАЧИНАЮЩИМ Давайте рассмотрим панель "Материалов" На моем с...

Скачать Плагины к Photoshop - (0)

Скачать Плагины к Photoshop   ...

Делаем декор с помощью фильтра Mura's Meister - (0)

Делаем декор с помощью фильтра Mura's Meister Этот коллаж я украсила декором из розочек, хотите...

Бродилка по моему дневнику - (0)

Бродилка по моему дневнику 200

Урок. Как загрузить в Корел кисти фотошопа - (0)

Урок. Как загрузить в Корел кисти фотошопа Загрузка кистей Кисти Photoshop имеют формат .abr, ко...

 -Поиск по дневнику

Поиск сообщений в Fisonka

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.11.2012
Записей:
Комментариев:
Написано: 256


Функция random и анимация глаз

Суббота, 17 Ноября 2012 г. 14:49 + в цитатник

Функция random, пожалуй, одна из самых используемых функций. Сейчас речь пойдёт об анимации глаз персонажа, а именно, будем делать так, чтобы он моргал в разное время. Это можно сделать и обычным способом, как делают аниматоры – размещают на таймлайне несколько анимаций моргания, сделав между ними промежуток с разным количеством кадров. А все можно сделать намного проще, используя as3.

Самый простой способ – это использовать random и обработчик событий ENTER_FRAME. Но об этом позже, сейчас сделаем некоторые приготовления. Для начала нам нужен глазастый персонаж. Мы возьмём оленя, а вы, я уверен, нарисуете своего неповторимого героя. Персонажа оборачиваем в клип (F8), разбиваем на части и распределяем по слоям.

Итак, имеем примерно вот такую структуру:

 

Глаза тоже оборачиваем в клип и внутри делаем анимацию моргания (случайное моргание выбрано в рамках данного урока, у вас это может быть удивление, испуг и т. п.). Для тех, кто не знает – как анимировать глаза.

Этому клипу назначаем имя c_eyes в Instance name на панели Properties

Рассматривая исходный файл, вы можете заметить, что все клипы, которые я именую, начинаются с приставки "с_" (сокращённо от clip). Это нужно для того, чтобы лучше ориентироваться в коде и не искать откуда взялась та или иная переменная, а знать что это клип созданный во флеше. Некоторые люди используют приставку "mc_" (MovieClip), а иные пишут вообще без приставок. Это всё договорённости.

Создаём новый слой и в первом кадре пишем код:

c_eyes.stop(); // останавливаем анимацию

var k = 1; // начальное значение

addEventListener(Event.ENTER_FRAME, Update); // добавляем слушатель событий 

function Update(e:Event):void {

      if (--k<=0) { // если --к ноль 

            c_eyes.gotoAndPlay(1); // проигрываем анимацыю 

            k = Math.floor(Math.random()*100+30); // генерируем новое к [30..100]

      }

      if(c_eyes.currentFrame == c_eyes.totalFrames) // если последний кадр анимации 

            c_eyes.gotoAndStop(1); // возвращаемся на начало

}

Получаем оленя моргающего через определённый, каждый раз разный, промежуток времени. Чтобы лучше было видно, что время разное, я добавил шкалу:

Пару слов о том, как это работает. Каждый раз, когда олень моргает, генерируется случайное число k от 30 до 100. Это число определяет задержку в кадрах, во время которой персонаж не моргает. Анимация в это время не проигрывается, и мы видим только первый кадр. С каждым кадром значение k уменьшается на 1 и когда достигает нуля, начинает проигрываться анимация и генерируется новое число k. Когда анимация моргания отыграла, то мы возвращаемся на первый кадр и опять ждём пока k не превратиться в 0. И так далее.

Что делать, если нужно анимировать несколько частей тела? Все то же самое. Разберём на примере уха оленя. Оборачиваем ухо в клип и внутри делаем анимацию. Именуем этот клип c_ear. Меняем код в верхнем кадре на следующий:

c_eyes.stop();

var k = 1;

// то же самое для уха

c_ear.stop();

var k1 = 1; // начальное значение

addEventListener(Event.ENTER_FRAME, Update);

function Update(e:Event):void {

if (--k<=0) {

       c_eyes.gotoAndPlay(1);

       k = Math.floor(Math.random()*100+30);

}

if(c_eyes.currentFrame == c_eyes.totalFrames)

       c_eyes.gotoAndStop(1);

 

// обработчик для уха, такой же самый.

if (--k1<=0)

{

       c_ear.gotoAndPlay(1)

       k1 = Math.floor(Math.random()*100+30);

}

 

if(c_ear.currentFrame == c_ear.totalFrames)

       c_ear.gotoAndStop(1);

}

Анимация:

Как видим, всё то же самое. Обработчик событий остался один, добавилась новая переменная k1 (можно использовать и k, только тогда ухо будет дёргаться синхронно к морганию). И в обработчике появился блок аналогичный предыдущему.

Небольшое дополнение:

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

Тем не менее, есть такая возможность, писать для каждого клипа свой код и свой обработчик событий, использовать шаблон, так сказать. Такую штуку как раз очень любят аниматоры. Поменять нужно следующее: клип c_eyes обернуть в ещё один клип и уже внутри него уже создать новый слой. На нём написать универсальный код:

var clip = c_eyes;

var k = 1;

clip.stop();

addEventListener(Event.ENTER_FRAME, Update);

function Update(e:Event):void {

if (--k<=0) {

       clip.gotoAndPlay(1)

       k = Math.floor(Math.random()*100+30);

}

if(clip.currentFrame == clip.totalFrames)

       clip.gotoAndStop(1);

}

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

Дело сделано. Эксперементируйте!

Также вы можете скачать исходник (Cs5).

 

Автор урока: Андрей Барвинко

Рубрики:  Уроки по flash
Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку