将鼠标悬停在完整播放影片剪辑

Posted

技术标签:

【中文标题】将鼠标悬停在完整播放影片剪辑【英文标题】:Playing a movie clip to its full with mouse over 【发布时间】:2017-05-06 15:08:44 【问题描述】:

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

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

我是 flash 的菜鸟,我不知道该分享什么来解决这类问题。我会提供解决问题所需的任何东西

谢谢

【问题讨论】:

你可以先展示你现在拥有的代码。 该按钮具有状态,一旦您将鼠标移出,按钮就会将“结束”状态更改回“向上”状态,从而丢弃处于“结束”状态的所有内容(我认为这是剪辑你想不想玩)。您需要先从按钮中拉出影片剪辑,然后编写按钮和剪辑行为的脚本。 【参考方案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”

[/编辑]

【讨论】:

@newron 请编辑您的问题!这次没有“downvote” Flash 已经死了 :( 大声笑,我不知道为什么我得到一个如此基本的答案的“赞成票”:) 我可以知道你的伪吗?无论如何,THX,但这真的很基本! @newron 这个答案是否解决了您的问题?您需要更详细的答案吗?显示您的代码,但这很容易解决此问题! ;) 如果您不提供反馈,将很难帮助您@newron

以上是关于将鼠标悬停在完整播放影片剪辑的主要内容,如果未能解决你的问题,请参考以下文章

鼠标悬停播放声音

将鼠标悬停在图像上时的音频

将鼠标悬停在css上时如何暂停幻灯片自动播放?

悬停/鼠标悬停时播放音频,可能没有 jQuery 吗?

悬停时播放音频文件(鼠标悬停时停止播放)

在鼠标悬停时将文本悬停在帖子图像上