鼠标悬停时播放完整的影片剪辑

Playing a movie clip to its full with mouse over

在 Adob​​e Flash 和 ActionScript 3.0 中,我在一个按钮中有一个影片剪辑。我想在鼠标悬停时播放整个影片剪辑。 但是,影片剪辑只播放到鼠标结束为止。如果有鼠标,我想把影片播放到最后。

感谢任何帮助。 我找到了一个博客,但它仅对 AS2 有效。这就是我想要做的,但是使用 AS3:EchoEcho

我是flash小白,遇到这种问题不知道有什么好分享的。我会提供解决问题所需的一切

谢谢

为简单起见... 如果您有一个名为 "your_mc" 的实例,其中包含您的动画(库中名为 your_symbol 的 MC,并且您在名为 "your_mc"

的实例中有一个补间动画

如果 MovieClip 放在舞台上,您可以试试这个。

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

注意这不是 Class 基础的,应该被视为一个基本的例子! 如果您想要更具体的内容,请编辑您的问题!

这里是真正基本的例子:

fla file

swf file

这不干净,所以,如果您想要更高效的东西,请编辑您的问题。 如果你想播放整个 MovieClip,只需检查 MC.currentFrame 和 MC.total 帧并添加一个布尔值来检查它。 所以MC无法在动画结束前停止

此致。 尼古拉斯

[编辑] 这将在鼠标结束时播放您的 MovieClip 到最后...

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"

[/编辑]