2010-01-12 108 views
12

我想獲得一個影片剪輯,當我從它mouse_out(它在mouse_over上播放)反向播放。Flash - 播放影片剪輯反向?

我的動作如下:

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 
} 

我將如何實現這一目標?

感謝

回答

15

最好的方法是使用一個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反向播放影片剪輯,那麼它就會停止的。

+0

非常感謝您的工作! – Probocop 2010-01-12 15:08:56

+0

沒問題。如上所示,您可以嘗試使用內置的Tween類或其他補間庫。關於ENTER_FRAME方法最好的事情是,無論幀速率如何,您的動畫都會向後或向前花費相同的時間量。 – sberry 2010-01-12 15:12:57

5

如果運動允許,則可以使用補間(例如,如果要更改alpha,位置或比例)。在MouseOut上,您可以爲Tween調用.yoyo(),它將反向播放它。

事情是這樣的:

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

如果吐溫是不是所有的嚴重,你可以從字面上做一個全新的集反向幀,並從關鍵幀只是玩。

這是窮人的逆向補間。

+0

非常真實,以及它是如何進行了很長時間的。 – sberry 2010-01-12 15:13:37

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

通過使用其作品作爲觸發和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;

0

你可以做到這一點傳遞影片剪輯對象找到正確的對象進行反轉。這種方式可以幫助你和你想要的孩子一起使用。你可以得到它:

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