Подтвердить что ты не робот

Вспышка - Воспроизведение видеоклипа в обратном направлении?

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

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

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
}

Как я могу это достичь?

Спасибо

4b9b3361

Ответ 1

Лучший способ - использовать прослушиватель событий 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);
    }
}

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

Ответ 2

Если движение позволяет, вы можете использовать Tween (например, если вы хотите изменить альфа, местоположение или масштаб). На 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();
}

Ответ 3

TweenLite.to(mc, 2, {frame:1});

Ответ 4

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

Чтобы бедный человек перевернул твинов.

Ответ 5

Используя логическое значение, которое работает как триггер, и 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;

Ответ 6

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

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);
    }
}