2012-07-18 62 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);