2012-07-18 67 views
0

我想要做的是运行一次我的监听器函数。问题是,一旦我将鼠标移动到我的影片剪辑“按钮”中,它会一次又一次地进入一个新的循环。我怎样才能让它运行只有一次,当补间事件完成?ActionScript 3 MouseEvent运行一次

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

回答

0

上述代码没有问题。

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

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

import fl.transitions.Tween; 
import fl.transitions.easing.*; 
import fl.transitions.TweenEvent; 

stop(); 

// ... rest of the code 
0

我觉得从解决@loxxy应该做的伎俩。 先试试这个解决方案。

如果不是,则在事件触发后尝试删除侦听器。您也可以稍后重新添加它。

例如为:

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

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

如果你想运行这两个的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); 

如果你想使一个循环,当在按钮上悬停鼠标跑过来,走出暗战一个接一个,你可以试试下面的代码:

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