Статьи

Quick Basix: случайное анимированное мигание

Даже при анимации на временной шкале прикосновение к ActionScript может улучшить то, что вы делаете. В этом кратком совете мы собираемся использовать одну линию AS3, чтобы добавить анимированный реализм в мгновение ока!


Возьмите исходные файлы и откройте файл «database.fla». На сцене вы найдете мувиклип «голова», который состоит из двух слоев, содержащих мувиклипы «лицо» и «глаза».

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

Quick Basix: случайное анимированное мигание

Мы будем периодически мигать глазами, поэтому начните с двойного щелчка на клипе «eyes», чтобы ввести его временную шкалу.


Удлините временную шкалу, добавив ключевой кадр в кадре 80 на слое «глаза». Вот где мы собираемся поместить глаза в их «моргшее» состояние.

Quick Basix: случайное анимированное мигание

Уберите открытые глаза со сцены и обратите свое внимание на библиотеку. Там вы найдете «eyesClosed», который вы можете расположить на сцене, где ранее был видеоклип «eyesOpen».

С закрытыми глазами, нажмите F5, чтобы добавить еще несколько кадров. Добавьте столько, сколько хотите; Это увеличит время, в течение которого глаза вашего персонажа будут закрыты во время любого моргания. 3 кадра это хорошо в нашем случае.

Протестируйте свой фильм (Command / Ctrl + Enter), чтобы получить представление о мигающем эффекте, который вы создали.

Головка воспроизведения движется вдоль временной шкалы, вызывая периодическое мигание. Отлично! Правильно? Ну, не совсем. Мигание мундира предполагает, что наш персонаж либо робот, либо отсутствует лобная доля .


Давайте улучшим эффект путем рандомизации моргания.

Добавьте второй слой в видеоклип «eyes», назовите его «actions» и заблокируйте. Выберите первый кадр и введите следующий фрагмент на панели действий («Окно»> «Действия»):

1
gotoAndPlay(uint(Math.random()*totalFrames)+1);

Что на самом деле делает этот фрагмент? Ну, gotoAndPlay(); action отправляет точку воспроизведения по текущей временной шкале в зависимости от того, какой номер кадра мы определим в фигурных скобках. Содержимое наших фигурных скобок даст нам номер нашего кадра.

Метод Math.random() вернет число от 0 до (но не включая) 1. Это умножается на totalFrames , свойство нашего мувиклипа — количество кадров в нем (в нашем случае 83). uint() убирает результат нашего random number * totalFrames , округляя в random number * totalFrames сторону и давая нам целое число.

Наименьшее целое число, которое мы можем ожидать, равно 0, поскольку uint (0 * 83) равно 0.

Максимальное целое число, на которое мы можем надеяться, равно 82, поскольку значение uint (0.9999999999 * 83) равно 82.

Поэтому мы +1 заканчиваем, давая нам целевой кадр где-то между 1 и 83.

Как только точка воспроизведения достигает конца нашей временной шкалы, она возвращается к кадру 1 и снова отправляется в случайный кадр.

Проверьте фильм еще раз!

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

Эффект становится еще яснее с двумя примерами нашего персонажа на сцене. В приведенном ниже примере у нас есть два разных персонажа, но оба используют один и тот же мувиклип «eyes»:

Я не говорю, что эти двое выглядят так, как будто они все вместе, но вы поняли идею …


Это действительно простой конечный результат, почему бы не посмотреть, сможете ли вы его улучшить?

  • Поиграть с выбором времени; изменить частоту кадров и количество кадров в вашем мигающем фильме.
  • Почему бы не попытаться изменить фрагмент, чтобы предотвратить перепрыгивание точки воспроизведения внутри самого мигающего действия?
  • Возможно, вы могли бы даже помешать анимации слишком быстро мигать подряд?

Вы закончили! Это простой и широко используемый метод, но перемещение точки воспроизведения к произвольным кадрам может применяться в тысячах ситуаций. Я надеюсь, что вы найдете для этого пользу 🙂