Версия для печати
Воскресенье, 15 Апреля 2012 12:28

Плавная анимация бабочки при наведении курсора.

Автор
Оцените материал
(0 голосов)

Начала делать фоновую анимацию        для сцен и персонажей. Надо сказать, что анимацию для живых существ и персонажей делать куда более приятней, чем анимировать какую-то там воду, к примеру. Вода так и не получилась пока, несмотря на неплохие уроки в сети на эту тему. Зато получилось анимировать облака на некоторых сценах, а также добавить красивый эффект солнечных лучей. Только, жаль, он тормозит очень сильно, поэтому похоже, его придется делать не на всех сценах. а только там, где Мурзик не движется.

Анимировала мышей и муравьев, и кошку.

Начали делать насекомых. Xeneder помог нарисовать бабочку, а я ее анимировала, после чего Lekste запрограммировал целый класс бабочек. Они себя ведут так, что при наведении на них курсором начинают хлопать крыльями. Однако, если делать стандартными средствами флеша, то получается резкое движение, когда отводишь мышь. Я облазила пол-интернета в поисках нормального подобного алгоритма на AS3. Кое что там, конечно, есть, но странновато или совсем не понятно, или не совсем то. Так что делаем по-своему! Далее написано более подробно, как это реализовывается и даже приведен код этого класса с подробными комментариями.

1)  Берем бабочку, заключаем её в муви-клип.

 

2) Пишем специальный класс в отдельном as -файле.

package  {

import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;


public class Babochka extends MovieClip {
private var active: Boolean;

public function Babochka() {
active = false;
addEventListener(MouseEvent.MOUSE_OVER, OnMOver); // задаем имя функции для вызова по событию наведения мышки
addEventListener(MouseEvent.MOUSE_OUT, OnMOut);      // задаем имя функции для вызова по событию отодвигания мышки   
addEventListener(Event.ENTER_FRAME, OnEnterFrame);  // задаем имя функции для вызова по событию переход в кадр
}

private function OnMOver(evt: MouseEvent): void {
if(!active) { // если до этого переменная active была "false", делаем её "true"
active = true;
play(); // и запускаем анимацию
}
}

private function OnMOut(evt: MouseEvent): void {
// если еще не сделали active = "false", то делаем, чтобы при переходе на 1-й кадр,
// остановить анимацию
if(active) {
active = false;
}
}

private function OnEnterFrame(evt: Event): void {
// если active = "false" и номер текущего кадра = 1
if(!active && (this.currentFrame == 1)) {
stop(); // останавливаем анимацию
}
}
}

}


3) Присваиваем нашему мувику с анимированной бабочкой класс Babochka.

4) Запускаем и радуемся!

Примечание: класс сгодится для любых анимашек, которые реагируют на наведение на них запуском анимации. 

Для сравнения: розовая бабочка делалась обычным стандартным способом с помощью кнопки. Подведите курсор и почувствуйте разницу! А если нет разницы, то мы идем к вам!!!      
Прочитано 6071 раз Последнее изменение Понедельник, 16 Апреля 2012 19:52
AnnTenna

Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript

Последнее от AnnTenna

Похожие материалы (по тегу)

5 комментарии

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