PDA

Просмотр полной версии : реверс анимации в указаных промежутках


cgggg
22.10.2011, 21:49
проблема такая есть скрипт - наводишь курсор анимация играет вперёд, убираешь - назад.
Как ограничить анимацию, до метки, чтобы на том же таймфрейме сделать анимацию клика, сейчас мувиклип играет до конца таймфрейма.

ball.addEventListener(Event.ENTER_FRAME, handler);
ball.buttonMode = true;
function handler(event:Event):void {
if (ball.hitTestPoint(root.mouseX, root.mouseY, true)) {
ball.nextFrame();
} else {
ball.prevFrame();
}
}

файл

spooner
22.10.2011, 21:51
ball.addEventListener(Event.ENTER_FRAME, handler);
ball.buttonMode = true;
function handler(event:Event):void {
if (ball.hitTestPoint(root.mouseX, root.mouseY, true)) {
if (ball.currentFrame < 10) ball.nextFrame();
} else {
ball.prevFrame();
}
}
На 10м кадре встанет.

cgggg
22.10.2011, 22:01
спасибо, супер, работает, только небольшая неточность
ball.addEventListener(Event.ENTER_FRAME, handler);
ball.buttonMode = true;
function handler(event:Event):void {
if (ball.hitTestPoint(root.mouseX, root.mouseY, true)) {
if (ball.currentFrame <= 9) ball.nextFrame();
} else {
ball.prevFrame();
}
}

spooner
22.10.2011, 22:06
Сколько кадров всего?
Больше 10 хоть?
И
ball.stop();
где-нибудь есть?

cgggg
22.10.2011, 22:08
да не нормально всё, там только 9 кадром нужно ограничить

spooner
22.10.2011, 22:09
да не нормально всё
Так нормально или не нормально?

cgggg
22.10.2011, 22:10
да да, всё ОК, спасибо

cgggg
23.10.2011, 11:18
эх..., не понимаю почему почему после клика на кнопку анимация не запускаеться?

start_video.addEventListener(Event.ENTER_FRAME, handler8);
start_video.addEventListener(MouseEvent.CLICK, start_video_onClick);
start_video.buttonMode = true;
var start_video_ToPlay:Boolean = true;
function start_video_onClick(evt:MouseEvent):void {
if (start_video_ToPlay) {
start_video.gotoAndPlay("_down");
SoundMixer.stopAll();
}
else {
start_video.gotoAndStop("_up");
}
start_video_ToPlay = !start_video_ToPlay;
}
function handler8(event:Event):void {
if (start_video.hitTestPoint(root.mouseX, root.mouseY, true)) {
if (start_video.currentFrame <= 9) start_video.nextFrame();
} else {
start_video.prevFrame();
}
}

spooner
23.10.2011, 13:43
Вы ежекадрово делаете
start_video.prevFrame();
как же он проигрываться будет?

cgggg
23.10.2011, 13:51
ну это ведь должно работать только при наведении, так и происходит, на клик другая функция, как так?

spooner
23.10.2011, 13:57
Событие Event.ENTER_FRAME вызывется каждый кадр и каждый кадр у вас проверяется находится ли курсор на объектом, и каждый кадр объект откатывается на кадр назад, просто уперевшись в первый кадр он дальше уже не может откатываться.

cgggg
23.10.2011, 15:16
Help PLZ!
получается на клик нужно еще завершить событие Event.ENTER_FRAME, а на повторный клик опять запустить?

Добавлено через 3 часа 5 минут
или как сделать чтобы после клика не проверялось где курсор, а после второго клика опять проверялось?

spooner
23.10.2011, 21:02
Попробуйте по событиям MouseEvent.ROLL_OVER, MouseEvent.ROLL_OUT и MouseEvent.CLICK подписывать разные слушатели (и соответственно отписывать не нужные) события Event.ENTER_FRAME.

cgggg
23.10.2011, 21:55
Попробуйте по событиям MouseEvent.ROLL_OVER, MouseEvent.ROLL_OUT и MouseEvent.CLICK подписывать разные слушатели (и соответственно отписывать не нужные) события Event.ENTER_FRAME.

это вариант, сам думал, только вот, я не знаю, как от конторольной метки запускать анимацию обратно,
я весь инет облазил, но все примеры друг друга повторяют.
может кто знает? как правильно это называеться.

spooner
23.10.2011, 22:18
Так у вас это реализовано в первом варианте:
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
private function enterFrameHandler(e:Event):void {
mc.prevFrame();
}

cgggg
23.10.2011, 22:46
савсем запутался

Добавлено через 1 час 11 минут
может у когото есть пример?

Добавлено через 14 часов 12 минут
как-то так, только не работает
start_video.addEventListener(Event.ENTER_FRAME, handler8);
start_video.addEventListener(MouseEvent.CLICK, start_video_onClick);
start_video.buttonMode = true;
start_video.stop();
var start_video_ToPlay:Boolean = true;
function start_video_onClick(evt:MouseEvent):void {
if this.hasEventListener(Event.ENTER_FRAME) {
this.removeEventListener(Event.ENTER_FRAME, handler8); }
if (start_video_ToPlay) {
start_video.gotoAndPlay("_down");
SoundMixer.stopAll();
}
else {
start_video.gotoAndStop("_up");
}
start_video_ToPlay = !start_video_ToPlay;
}
function handler8(event:Event):void {
if (start_video.hitTestPoint(root.mouseX, root.mouseY, true)) {

if (start_video.currentFrame <= 9) start_video.nextFrame();
} else {

start_video.prevFrame();
}
}