您是否必須刪除具有本地範圍的變量的事件偵聽器?通過這個我的意思是...如果變量只存在,只要函數/方法正在運行,事件監聽器是否仍然存在?刪除局部變量的事件偵聽器?
private function startSomething():void
{
whatever.start();
var t:Timer = new Timer(2000,1);
t.addEventListener(TimerEvent.TIMER, stopSomething, false, 0, true);
t.start();
}
private function stopSomething(e:TimerEvent):void
{
// do you have to remove the event listener here??
}
我確實有一個相關的問題(上面添加了詳細信息)...如果變量只存在於第一個方法內部,我是否必須擔心爲該變量除去事件偵聽器? – redconservatory 2011-02-15 17:24:18
對於定時器,即使定時器變量超出範圍,事件偵聽器也是有效的。定時器事件在函數執行結束並且變量超出範圍之後觸發。所以,如果這是重複的,那麼當你不再需要的時候,你應該按照Simsoft的答案中指定的方法移除監聽器。但是如果定時器不重複,那就沒有必要。顯示對象也一樣。假設你已經在現有的顯示對象上添加了一個按鈕。按鈕變量是本地的,但由於按鈕存在於將監聽事件的顯示對象上。希望能幫助到你。 – taskinoor 2011-02-15 17:38:47