2014-10-27 45 views
0

我是AS3的新手,需要幫助瞭解如何在沒有發生用戶交互的情況下移除我的MouseEvent.MOUSE_MOVE偵聽器。如果沒有用戶交互發生,則移除MouseEvent.MOUSE_MOVE事件偵聽器

我建立了一個動畫,它執行以下操作: 一條實線和一些文字出現在圖像頂部。完成後,啓用鼠標事件,允許用戶上下移動線路。當用戶停止與該線交互時,該線消失並且出現動畫的最終屏幕。

如果用戶根本不與動畫交互(線條從不移動),我需要合併某種方式來移除事件偵聽器,然後顯示動畫的最終屏幕。我認爲添加一個TimerEvent是做我想做的事的正確方法,但我不知道如何合併它。這也可能不是最好的或正確的方法。在這種情況下,有沒有人有建議,應該做什麼?

任何幫助將不勝感激!

這裏是我的代碼:

import com.greensock.*; 

//objects on the stage 
line_mc.y=250; 
raisingTxt.alpha=0; 
arrow_mc.alpha=0; 
final_mc.alpha=0; 
logo_mc.alpha=1 ; 


//move line mc to y:125 
TweenLite.to(line_mc, 1, {y:125}); 
TweenLite.to(raisingTxt, .5, {alpha:1, delay:1.2}); 
TweenLite.to(arrow_mc, .5, {alpha:1, delay:1.2, onComplete:followMouse}); 


//calls MouseEvent onComplete of tween 
function followMouse() { 
    stage.addEventListener(MouseEvent.MOUSE_MOVE, moveIt); 
} 

function moveIt(e:MouseEvent):void { 
    TweenLite.to(line_mc, 0.5, {y:this.mouseY}); 
    TweenLite.to([raisingTxt,arrow_mc], 0.5, {alpha:0, onComplete:finalScreen}); 
} 

//calls final screen onComplete of MouseEvent 
function finalScreen() { 
    TweenLite.to(line_mc, 0.5, {alpha:0}); 
    TweenLite.to(final_mc, 0.5, {alpha:1}); 
} 
+0

你看過'setTimeout()'嗎?或者更好的選擇是使用Timer對象。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html – 2014-10-27 17:08:47

+0

您永遠不會刪除鼠標移動偵聽器,並且無論如何都會創建太多的Tweenlite實例。這段代碼太昂貴,會產生內存泄漏。 – BotMaster 2014-10-27 17:13:46

+0

@BotMaster它爲什麼會產生內存泄漏? – Fygo 2014-10-27 19:37:23

回答

1

您可以用內置的Timer類實現這一點。我喜歡它比setTimeout function多一點,因爲它更容易管理。

首先創建一個類寬變量(假設你是在Flash IDE這樣做,只是創建它靠近頂部)

var timeout:Timer; 
followMouse()

然後:

private function followMouse():void { 
    timeout = new Timer(3000, 1); 
    timeout.addEventListener(TimerEvent.TIMER_COMPLETE, removeMouseListener); 
    timeout.start(); 
    stage.addEventListener(MouseEvent.MOUSE_MOVE, moveIt); 
} 

末創建removeMouseListener()

​​

如果你想保持resettin g,每一次鼠標移動定時器,可以將這些兩行添加到您的moveIt()

timeout.reset(); 
timeout.start(); 

我做了removeMouseListener()有一個可選的參數,這樣你就可以把它無論計時器的任何時間。

希望有幫助!祝你好運!

+0

謝謝你的幫助!你的指示非常清晰,我的動畫現在可以按照我需要的方式工作。 – somkg14 2014-10-27 22:02:38

+0

@ somkg14你會標記爲答案請 – 2014-10-28 17:55:53

+0

@ C.Parcell完成。對於那個很抱歉。我是這個網站的新手,並沒有意識到需要這樣做。謝謝你的幫助。 – somkg14 2014-10-29 18:19:11