我是ActionScript 3的初學者。最近我嘗試使用addEventListener
來調用函數。我發現有一些例子添加removeEventListener
當它們調用的功能,如:當我調用addEventListener時,是否必須設置removeEventListener?
public function Away3DMultiMarkerDemo()
{
addEventListener(Event.INIT, initIN2AR);
super();
}
private function initIN2AR(e:Event = null):void
{
removeEventListener(Event.INIT, initIN2AR);
in2arLib.init(workW, workH, maxPoints, maxReferences, 100, stage);
in2arLib.setupIndexing(12, 10, true);
in2arLib.setUseLSHDictionary(true);
in2arLib.addReferenceObject(ByteArray(new DefinitionaData0));
in2arLib.addReferenceObject(ByteArray(new DefinitionaData1));
in2arLib.setMaxReferencesPerFrame(2);
in2arLib.setMatchThreshold(40);
intrinsic = in2arLib.getIntrinsicParams();
initCamera();
initAway3D();
initText();
initListeners();
}
我的問題是,我需要一個removeEventListener
每次設置的時候我叫addEventListener
?我做了一些研究,添加removeEventListener
的目的是爲了釋放內存,否則程序會保持監聽事件。
只需添加一個弱引用監聽器看起來像(最後一個參數是useWeakReference的布爾值):addEventListener(Event.INIT,initIN2AR,false,0,true); – crooksy88 2013-04-10 06:59:29
謝謝你的回覆,你能不能詳細解釋一下「弱引用」?弱引用的目的是什麼?這些參數是什麼(false,0,true)意味着什麼。如果我設置了一個弱引用,那我還需要一個removeEventListener嗎? – Richard 2013-04-10 14:40:04
@Richard我認爲格蘭特斯金納可以做比我更好的工作來解釋事件監聽者的弱引用。請閱讀這裏:http://gskinner.com/blog/archives/2006/07/as3_weakly_refe.html – 2013-04-11 05:31:37