Flash - Воспроизвести видеоклип в обратном порядке? - PullRequest
12 голосов
/ 12 января 2010

Я пытаюсь заставить фильм воспроизводиться в обратном порядке, когда из него mouse_out (он воспроизводится при mouse_over).

Мой код действия выглядит следующим образом:

mc.stop();
mc.addEventListener(MouseEvent.MOUSE_OVER,mover);
mc.addEventListener(MouseEvent.MOUSE_OUT,mout);

function mover(e:MouseEvent):void
{
    mc.play();
}

function mout(e:MouseEvent):void
{
   //Play in reverse
}

Как бы мне этого добиться?

Спасибо

Ответы [ 6 ]

15 голосов
/ 12 января 2010

Лучший способ - использовать прослушиватель событий ENTER_FRAME. В основном это то, что вы хотите сделать

function mover(e:MouseEvent):void {
    stopPlayReverse();
    mc.play();
}

function mout(e:MouseEvent):void {
    this.addEventListener(Event.ENTER_FRAME, playReverse, false, 0, true);
}

function playReverse(e:Event):void {
    if (mc.currentFrame == 1) {
        stopPlayReverse();
    } else {
        mc.prevFrame();
    }
}

function stopPlayReverse():void {
    if (this.hasEventListener(Event.ENTER_FRAME)) {
        this.removeEventListener(Event.ENTER_FRAME, playReverse);
    }
}

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

5 голосов
/ 12 января 2010

Если движение позволяет, вы можете использовать анимацию движения (например, если вы хотите изменить альфа, местоположение или масштаб). В MouseOut вы можете вызвать .yoyo () для Tween, который будет воспроизводить его в обратном порядке.

Примерно так:

var tween:Tween;

mc.addEventListener(MouseEvent.MOUSE_OVER,mover);
mc.addEventListener(MouseEvent.MOUSE_OUT,mout);

function mover(e:MouseEvent):void
{
    tween = new Tween(obj, "alpha", None.easeNone, 1, 0, 1, true);
}

function mout(e:MouseEvent):void
{
   tween.yoyo();
}
4 голосов
/ 12 января 2010
TweenLite.to(mc, 2, {frame:1});
1 голос
/ 12 января 2010

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

Это обратная анимация бедняги.

0 голосов
/ 16 июля 2016

Вы можете сделать это, передав объект мувиклипа, чтобы найти правильный объект для обратного. Этот способ помогает вам использовать с ребенком, которого вы хотите. Вы можете получить это с:

fMoveBack (this.getChildByName ( "my_clip"));

function fMoveBack(my_clip:MovieClip):void {
    this.addEventListener(Event.ENTER_FRAME, playReverse(my_clip));
}

function playReverse(mc:MovieClip):Function {
    return function playReverse(e:Event):void {
        if (mc.currentFrame == 1) {
            stopPlayReverse(mc);
        } else {
            mc.prevFrame();
        }
    };
}

function stopPlayReverse(mc:MovieClip):void {
    if (this.hasEventListener(Event.ENTER_FRAME)) {
        this.removeEventListener(Event.ENTER_FRAME, playReverse);
    }
}
0 голосов
/ 22 мая 2015

Используя логическое значение, которое работает как триггер, и Event.ENTER_FRAME, вы можете сделать следующее для реверсирования кадров:

//Boolean and Event.ENTER_FRAME
var reversing:Boolean = false;
AddEventListener(Event.ENTER_FRAME, reverse);

function reverse(e:Event){
    if(reversing)
    {
        //mc is displaying previous frame every frame
        mc.prevFrame();

        //until the currentFrame is 1
        if(mc.currentFrame == 1)
            reversing = false;
    }
}

Ваш //Play in reverse установит reversing = true;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...