2016-12-21 34 views
-2

在Adobe Flash和ActionScript 3.0中,我在按鈕內有一個動畫片段。我想在鼠標懸停後播放整個影片剪輯。 但是,動畫片段只播放直到鼠標結束。如果鼠標在那裏,我想播放電影剪輯到最後。使用鼠標將影片剪輯全部播放到其全部內容

任何幫助表示讚賞。 我發現了一個博客,但它僅適用於AS2。這是我想要做的,但與AS3:EchoEcho

我是flash的noob,我不知道什麼分享這種問題。我公司將提供所需要解決問題

感謝

+2

您可以通過展示你現在有什麼樣的代碼開始。 – frankhermes

+0

該按鈕有狀態,一旦你將鼠標移出按鈕,將'over'狀態改回'up'狀態,因此丟棄'over'狀態下的所有東西(我認爲這是你想播放的剪輯)。您需要首先從按鈕中拉出動畫片段,然後編寫按鈕和剪輯行爲的腳本。 – Organis

回答

1

爲簡單起見... 如果你有一個實例名爲「your_mc」包含動畫(在庫中的MC命名your_symbol什麼,你有一個名爲「your_mc」

實例吐溫如果影片剪輯放在舞臺上,你可以試試這個。

import flash.display.MovieClip; 
import flash.events.MouseEvent; 

var your_mc:MovieClip = your_mc; 
your_mc.stop() 
var clipStopped:Boolean = true; 
your_mc.addEventListener(MouseEvent.MOUSE_OVER,playStopClip); 
your_mc.addEventListener(MouseEvent.MOUSE_OUT,playStopClip); 
function playStopClip(e:MouseEvent):void{ 
    switch (clipStopped) { 
     case false: 
      clipStopped = !clipStopped; 
      break; 
     case true: 
      clipStopped = !clipStopped; 
      break; 
    } 
    if (!clipStopped){ 
     your_mc.gotoAndPlay(1); 
    }else{ 
     your_mc.gotoAndStop(1); 
    } 
} 

小心基於類的,這不是的,應該被視爲基本的例子! 如果你想要更具體的東西,請編輯你的問題!

很基本的例子在這裏:如果你想要的東西更高效請

fla file

swf file

這是不乾淨的,所以,只要編輯你的問題。 如果你想播放整個MovieClip,只需檢查MC.currentFrame和MC.total幀並添加一個布爾值來檢查它。 所以MC不能在動畫結束之前停下來。

此致敬禮。 薩科

[編輯] 這將發揮你的電影剪輯,結束時,鼠標懸停......

import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.events.Event; 

var isRunning:Boolean = false; 
var your_mc:MovieClip = your_mc; 
your_mc.stop() 
var clipStopped:Boolean = true; 
your_mc.addEventListener(MouseEvent.MOUSE_OVER,playStopClip); 

function playStopClip(e:MouseEvent):void{ 
    if(clipStopped && isRunning==false){ 
     trace("is Running = " + !isRunning) 
      your_mc.gotoAndPlay(1); 
      clipStopped = !clipStopped; 
      isRunning = true 
      your_mc.addEventListener(Event.ENTER_FRAME,changeStatus); 
    } 
} 
function changeStatus(e:Event):void{ 
    if (your_mc.currentFrame == your_mc.totalFrames){ 
     isRunning = false; 
     clipStopped = true; 
     your_mc.gotoAndStop(1); 
     your_mc.removeEventListener(Event.ENTER_FRAME,changeStatus); 
    } 
    trace(your_mc.currentFrame + "/" + your_mc.totalFrames); 
} 

fla file

swf file

import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.events.Event; 

var isRunning:Boolean = false; 
var your_mc:MovieClip = your_mc; 
your_mc.stop() 
var clipStopped:Boolean = true; 
your_mc.addEventListener(MouseEvent.MOUSE_OVER,playStopClip); 

function playStopClip(e:MouseEvent):void{ 
    if(clipStopped && isRunning==false){ 
     trace("is Running = " + !isRunning) 
      your_mc.gotoAndPlay(1); 
      clipStopped = !clipStopped; 
      isRunning = true 
      your_mc.addEventListener(Event.ENTER_FRAME,changeStatus); 
    } 
} 
function changeStatus(e:Event):void{ 
    if (your_mc.currentFrame == your_mc.totalFrames){ 
     isRunning = false; 
     clipStopped = true; 
     your_mc.stop(); 
     your_mc.removeEventListener(Event.ENTER_FRAME,changeStatus); 
    } 
    trace(your_mc.currentFrame + "/" + your_mc.totalFrames); 
} 

fla file

swf file

如果您想將您的影片剪輯播放到最後一幀,則不需要更多MouseEvent.MOUSE_OUT。

MouseEvent.MOUSE_OVER僅在您的電影剪輯動畫完成時可用。

所以當你沒有給反饋和問題不清楚:「DownVote」

[/編輯]

+0

@newron請編輯您的問題!這個時候沒有「downvote」 – tatactic

+0

Flash反正死了:( – tatactic

+0

大聲笑,我不知道爲什麼我得到了一個「upvote」的基本答案:) 我可以知道你的僞?無論如何,這是THX,但這是非常基本的! – tatactic

相關問題