我是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