ActionScript 3鼠标事件运行一次



我想做的是运行一次overlistener函数。问题是,一旦我把鼠标移到我的电影剪辑"按钮"上,它就会一次又一次地进入一个新的循环。当tween事件完成时,我如何使它只运行一次

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
function Over (e:MouseEvent):void
{
trace('Over');
var myTweenUp:Tween = new Tween(button, "y", Back.easeOut, 200, 180, 2, true);
}
function Out (e:MouseEvent):void
{
trace('Out');
var myTweenDown:Tween = new Tween(button, "y", Back.easeOut, 180, 200, 2, true);
}
button.addEventListener(MouseEvent.MOUSE_OVER, Over);
button.addEventListener(MouseEvent.MOUSE_OUT, Out);

上面的代码没有问题。

我认为您正在将代码添加为框架脚本,即在IDE中的时间轴框架上。

如果是这种情况,只需在上面的代码片段之前添加stop();

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
stop();
// ... rest of the code

我认为@loxy的解决方案应该能解决这个问题先试试那个解决方案

如果没有,请在事件触发后尝试删除侦听器。您也可以稍后重新添加。

例如:

function Over (e:MouseEvent):void
{
    button.removeEventListener(MouseEvent.MOUSE_OVER, Over);
    [...]
}
function Out (e:MouseEvent):void
{
    button.addEventListener(MouseEvent.MOUSE_OVER, Over);
    [...]
}

如果你想运行这两个MouseEvent,你可以添加removeEventListener来实现它。

function Over (e:MouseEvent):void
{
trace('Over');
var myTweenUp:Tween = new Tween(button, "y", Back.easeOut, 200, 180, 2, true);
button.removeEventListener(MouseEvent.MOUSE_OVER, Over);
}
function Out (e:MouseEvent):void
{
trace('Out');
var myTweenDown:Tween = new Tween(button, "y", Back.easeOut, 180, 200, 2, true);
button.removeEventListener(MouseEvent.MOUSE_OUT, Out);
}
button.addEventListener(MouseEvent.MOUSE_OVER, Over);
button.addEventListener(MouseEvent.MOUSE_OUT, Out);

如果你想做一个循环,当鼠标悬停在运行Over的按钮上,然后一个接一个地运行out时,你可以尝试下面的编码:

function Over (e:MouseEvent):void
{
trace('Over');
var myTweenUp:Tween = new Tween(button, "y", Back.easeOut, 200, 180, 2, true);
button.removeEventListener(MouseEvent.MOUSE_OVER, Over);
button.addEventListener(MouseEvent.MOUSE_OUT, Out);
}
function Out (e:MouseEvent):void
{
trace('Out');
var myTweenDown:Tween = new Tween(button, "y", Back.easeOut, 180, 200, 2, true);
button.removeEventListener(MouseEvent.MOUSE_OUT, Out);
button.addEventListener(MouseEvent.MOUSE_OVER, Over);
}
button.addEventListener(MouseEvent.MOUSE_OVER, Over);

最新更新