2010-01-12 13 views
12

Próbuję uzyskać klip filmowy do odtwarzania w odwrotnej kolejności, gdy I mouse_out z niego (gra na mouse_over).Flash - Odtwórz film w odwrotnej kolejności?

Moje ActionScript jest następujący:

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 
} 

Jak to osiągnąć?

Dzięki

Odpowiedz

15

Najlepszym sposobem byłoby wykorzystanie detektora zdarzeń ENTER_FRAME. Zasadniczo jest to, co chcesz zrobić, aby wykonać MovieClip w odwrotnym kierunku, aż uderzy w klatkę 1, a następnie zatrzyma się.

+0

Wielkie dzięki, które działało idealnie! – Probocop

+0

Bez problemu. Zgodnie z sugestią możesz spróbować użyć wbudowanej klasy Tween lub innej biblioteki Tweening. Najlepszą rzeczą w podejściu ENTER_FRAME jest to, że twoja animacja zajmuje tyle samo czasu wstecz lub do przodu, niezależnie od liczby klatek na sekundę. – sberry

5

Jeśli pozwala na to ruch, można użyć animacji (na przykład, jeśli chcesz zmienić alfa, lokalizację lub skalę). Na MouseOut możesz wywołać .yoyo() dla Tween, która odtworzy ją w odwrotnej kolejności.

coś takiego:

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

Jeśli animacja nie jest aż tak poważna można dosłownie zrobić zupełnie nowy zestaw ramek w odwrotnej kolejności i po prostu grać z tej klatki kluczowej.

To odwrotna animacja tego biedaka.

+0

Bardzo prawdziwe i jak to zostało zrobione od wieków. – sberry

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

Stosując wartość logiczną, która działa jako wyzwalacz i Event.ENTER_FRAME, można wykonać następujące czynności, aby odwrócić Ramki:

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

Twój //Play in reverse byłyby określone reversing = true;

0

Można zrobić to przepuszczenie obiekt klipu filmowego, aby znaleźć właściwy obiekt do odwrócenia. W ten sposób możesz korzystać z dzieckiem, które chcesz. Możesz to uzyskać za pomocą:

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); 
    } 
} 
Powiązane problemy