我是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});
}
你看過'setTimeout()'嗎?或者更好的選擇是使用Timer對象。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html – 2014-10-27 17:08:47
您永遠不會刪除鼠標移動偵聽器,並且無論如何都會創建太多的Tweenlite實例。這段代碼太昂貴,會產生內存泄漏。 – BotMaster 2014-10-27 17:13:46
@BotMaster它爲什麼會產生內存泄漏? – Fygo 2014-10-27 19:37:23