Дрожащий объект в ActionScript 3




Главная > Уроки > Action script 3.0 > Дрожащий объект в ActionScript 3

Дрожащий объект в ActionScript 3

Автор/переводчик статьи: Команда сайта flashmaster.org.ua

Дата: 2014-01-10

С помощью эффекта дрожания можно придать тексту или любому рисунку более привлекательный вид и выделить его на фоне других объектов. Это очень актуально для рекламных баннеров в интернете. Рассмотрим как сделать «дрожащую» надпись.

Kmpplayer отличное решение для windows, так что рекомендуем нашим читателям - kmplayer для windows.

Для начала создаем проект AS3. Сразу на сцену добавляем текстовое поле, в котором пишем, то, что нам нужно. При этом, выбираем нужный нам шрифт, размещаем надпись по центру или как-то по-другому. Можно использовать различные фильтры. Та же ситуация и с шрифтом: можно использовать стандартный, можно загрузить новый из интернета, можно создать самому. Называем наше поле "vibratto_txt".

Теперь нам нужно создать класс. С этой целью мы выделяем наше поле и нажимаем кнопку F9. Перед нами открывается редактор кода для текущего кадра.

Смысл такого эффекта дрожания в том, что мы, как бы, двигаем поле туда-сюда, с частотой 24 раза за секунду. Итак, для первого события – движение поля, будет использоваться класс Timer, а для второго – возвращение его на прежнее место – в ход пойдет Event.ENTER_FRAME.

Дабы импортировать необходимые классы, прописываем:

import flash.utils.setTimeout;

import flash.utils.Timer;

import flash.geom.Point;

import flash.events.Event;

Теперь вписываем следубщее:

var text_variants:Array = ['1 вариант текста','2 вариант текста','3 вариант текста','4 вариант текста'];

//варианты значений текстового поля

var tf_position:Point;

//Point содержит в себе координаты чего-либо(текстового поля), полезно, т.к. нет необходимости создавать две переменные

var now_index:Number = -1;

//последний индекс в массиве вариантов, нужен для защиты от повторения значения

var effect_power:Number = 1;

//насколько сильно объект будет "улетать" от своей текущей позиции

var update_delay:Number = 4;

//время задержки перед следующим обновлением значения текстового поля в секундах

Это переменные, которые будут изменяться при запуске ролика.

Запустив процесс возвращение объекта на место, в координату случайного текстового поля водим такой код:

initStage();

function initStage():void

{//инициализирует сцену

tf_position = new Point(vibratto_txt.x,vibratto_txt.y);

//запоминаем текущие координаты

stage.addEventListener(Event.ENTER_FRAME, updateTfPosition);

//24 раза в секунду возвращаем текстовое поле на место

updateTfValue();

//запускаем цикл обновлений и заодно обновляем значение

}

Функция возвращения объекта на место:

function updateTfPosition(e:Event):void

{//Эта функция возвращает текстовое поле на место

vibratto_txt.x = tf_position.x;

//присваем координату из памяти по х

vibratto_txt.y = tf_position.y;

//присваем координату из памяти по y

}

Теперь напишем функцию обновления значения текстового поля:

function updateTfValue():void

{//Эта функция обновляет содержимое текстового поля

var timer:Timer = new Timer(20,21);

//создаем таймер длительностью 20 милисекунд, повторить 21 раз

/*

таймер через каждые 20 милисекунд будет трясти текстовое поле

после 21 повторения эффекта тряски он перестанет работать

*/

timer.addEventListener(TimerEvent.TIMER, shakeTf);

//каждый раз(пока идет повторение) вызываем эффект дрожи

var random_index:Number = Math.floor(Math.random() * text_variants.length);

//выбираем случайную ячейку массива

if (random_index != now_index)

{//если это не та ячейка, что была в прошлый раз, то запускаем таймер

timer.start();

//запускаем таймер

setTimeout(updateTfValue, update_delay * 1000);

//запускаем таймер, по истечении которого эта функция вызовется еще раз(изменится значение текстового поля)

vibratto_txt.text = text_variants[random_index];

//указываем текстовому полю значение той ячейки, что сгенерировали

now_index = random_index;

//запоминаем текущую ячейку

}

else

{//если та ячейка, что была в прошлый раз, то повторяем генерацию случайной ячейки еще раз

updateTfValue();

}

}

И, наконец, напишем функцию случайного перемещения объекта:

function shakeTf(e:Event):void

{//Эта функция отвечает за анимацию дрожи

var rand:Number = Math.random();

//генерируем число от 0 до 1

if (rand >= 0.5)

{//если число больше 0.5, то перемещаем вправо и вниз

vibratto_txt.x += Math.random() * effect_power;//на расстояние от 0 до 1 пиксела

vibratto_txt.y += Math.random() * effect_power;

}

else

{//если нет, то вверх и влево

vibratto_txt.x -= Math.random() * effect_power;

vibratto_txt.y -= Math.random() * effect_power;

}

}

Все, наш объект «дрожит».

Просмотров: 1210


Понравился материал? Поделись с друзьями!





Подписаться на рассылку.

При перепечатки материалов ссылка на наш сайт обязательна!


 1