用鼠标悬停播放影片剪辑

时间:2016-12-21 08:48:57

标签: actionscript-3 flash movieclip

在Adobe Flash和ActionScript 3.0中,我在一个按钮中有一个movieclip。我想在鼠标悬停时播放整个影片剪辑。 但是,只有鼠标结束才能播放动画片段。如果鼠标在那里我想播放影片剪辑直到最后。

感谢任何帮助。 我发现了一个博客,但它仅适用于AS2。这是我想要做的,但使用AS3:EchoEcho

我是闪光灯的菜鸟,我不知道要分享什么样的问题。我将提供解决问题所需的一切

由于

1 个答案:

答案 0 :(得分:1)

简化...... 如果您有一个名为“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);
    }
}

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

这里真的是基本的例子:

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”

[/编辑]