2010-01-12 5 views
12

J'essaye de faire jouer un clip à l'envers quand je le souris (il joue sur mouse_over).Flash - Lire le clip vidéo à l'envers?

Mon actionscript est la suivante:

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 
} 

Comment puis-je atteindre cet objectif?

Merci

Répondre

15

La meilleure façon serait d'utiliser un écouteur d'événement ENTER_FRAME. Fondamentalement, c'est ce que vous voulez faire

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

Ceci jouer votre MovieClip en sens inverse jusqu'à ce qu'il touche l'image 1, il arrêtera.

+0

Merci beaucoup qui a fonctionné parfaitement! – Probocop

+0

Pas de problème. Comme suggéré, vous pouvez essayer d'utiliser la classe Tween intégrée ou une autre bibliothèque d'interpolation. La meilleure chose à propos de l'approche ENTER_FRAME est que votre animation prend le même laps de temps en arrière ou en avant, quelle que soit la fréquence de vos images. – sberry

5

Si le mouvement le permet, vous pouvez utiliser un Tween (par exemple si vous voulez changer l'alpha, l'emplacement ou l'échelle). Sur le MouseOut vous pouvez appeler .yoyo() pour le Tween, qui le jouera à l'envers.

Quelque chose comme ceci:

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

Si votre tween est pas si grave, vous pouvez littéralement faire un nouvel ensemble de cadres dans le sens inverse et il suffit de jouer de cette image-clé.

C'est l'inverse de l'homme pauvre.

+0

Très vrai, et comment cela a été fait depuis des lustres. – sberry

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

En utilisant un booléen qui fonctionne comme un déclencheur et Event.ENTER_FRAME, vous pouvez effectuer les opérations suivantes pour inverser les cadres:

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

Votre //Play in reverse fixerait reversing = true;

0

Vous pouvez faire passer le objet clip vidéo pour trouver l'objet correct à inverser. Cette manière vous aide à utiliser avec l'enfant que vous voulez. Vous pouvez l'obtenir avec:

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