鼠标悬停时播放完整的影片剪辑
Playing a movie clip to its full with mouse over
在 Adobe 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 基础的,应该被视为一个基本的例子!
如果您想要更具体的内容,请编辑您的问题!
这里是真正基本的例子:
这不干净,所以,如果您想要更高效的东西,请编辑您的问题。
如果你想播放整个 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);
}
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);
}
如果您想播放您的影片剪辑到最后一帧,这里不再 MouseEvent.MOUSE_OUT。
MouseEvent.MOUSE_OVER仅在您的影片剪辑动画完成后可用。
所以您没有给出反馈并且问题不清楚:"DownVote"
[/编辑]
在 Adobe 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 基础的,应该被视为一个基本的例子! 如果您想要更具体的内容,请编辑您的问题!
这里是真正基本的例子:
这不干净,所以,如果您想要更高效的东西,请编辑您的问题。 如果你想播放整个 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);
}
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);
}
如果您想播放您的影片剪辑到最后一帧,这里不再 MouseEvent.MOUSE_OUT。
MouseEvent.MOUSE_OVER仅在您的影片剪辑动画完成后可用。
所以您没有给出反馈并且问题不清楚:"DownVote"
[/编辑]