2010-01-15 132 views
0

我正在嘗試使用mouse_over動畫在mouse_out上反向播放一些flash按鈕。現在我已經爲我的三個影片剪輯實例中的一個工作。Actionscript 3 mouse_over播放電影,mouse_out反向電影

我正在使用e.currentTarget.play()而不是每個影片剪輯的函數,但我怎麼做我的playReverse函數相同?我試圖把e.currentTarget.prevFrame()而不是mc1.prevFrame(),但它沒有工作。我的代碼如下:

mc1.addEventListener(MouseEvent.MOUSE_OVER,mover); 
mc2.addEventListener(MouseEvent.MOUSE_OVER,mover); 
mc3.addEventListener(MouseEvent.MOUSE_OVER,mover); 
mc1.addEventListener(MouseEvent.MOUSE_OUT,mout); 
mc2.addEventListener(MouseEvent.MOUSE_OUT,mout); 
mc3.addEventListener(MouseEvent.MOUSE_OUT,mout); 

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

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

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

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

任何想法如何解決這個問題?

回答

2

您的函數playReverse僅使用mc1它如何與其他影片剪輯一起使用。

如果您選擇這樣做,您可以跟蹤當前MovieClip反向播放。 如果您希望在將一個片段傳遞到另一個片段時逆向播放總是完成,您將不得不添加更多邏輯。

var currentMovieClip:MovieClip=null; 

function mout(e:MouseEvent):void { 
    var mc:MovieClip = e.currentTarget as MovieClip; 
    if (mc !== null) { 
    currentMovieClip = mc; 
    this.addEventListener(Event.ENTER_FRAME, playReverse, false, 0, true); 
    } 
} 

function playReverse(e:Event):void { 
    if (currentMovieClip==null) { 
     return; 
    } 

    if (currentMovieClip.currentFrame == 1) { 
     stopPlayReverse(); 
    } else { 
     currentMovieClip.prevFrame(); 
    } 
} 

這意味着你可以有每個剪輯完成他們的發揮反向

function mover(e:MouseEvent):void { 
    stopPlayReverse(e.currentTarget as MovieClip); 
    e.currentTarget.play(); 
} 

function mout(e:MouseEvent):void { 
    var mc:MovieClip = e.currentTarget as MovieClip; 
    if (mc !== null) { 
    mc.addEventListener(Event.ENTER_FRAME, playReverse, false, 0, true); 
    } 
} 

function playReverse(e:Event):void { 
    var mc:MovieClip = e.currentTarget as MovieClip; 

    if (mc.currentFrame == 1) { 
     stopPlayReverse(mc); 
    } else { 
     mc.prevFrame(); 
    } 
} 

function stopPlayReverse(mc:MovieClip):void { 
    if ((mc!==null) && mc.hasEventListener(Event.ENTER_FRAME)) { 
    mc.removeEventListener(Event.ENTER_FRAME, playReverse); 
    } 
} 
+0

這太棒了非常感謝你的另一種方式! – Probocop 2010-01-15 13:54:37