代码存储的功能
for (var i:int = 0; i < markers.length; i++)
{
markers[i].addEventListener(MapMouseEvent.CLICK, function(e:Event):void
{
markers[i].openInfoWindow(infoWindows[i]);
});
map.addOverlay(markers[i]);
}
我有标记在markers
阵列的列表,并且infoWindow
阵列中相关联的InfoWindowOptions的列表的列表。
的问题
通过单击该标记的时间和匿名函数调用,用于循环已完成和i
现在等于markers.length
。所以我在markers[i]
和infoWindows[i]
上遇到了一个界限错误。
我想创建一个关联函数的列表,并将其存储在一个数组中。所以,我可以做这样的事情,而不是:
for (var i:int = 0; i < markers.length; i++)
{
markers[i].addEventListener(MapMouseEvent.CLICK, markerListeners[i]);
}
所以我需要知道的是两种,
- 我如何能的函数引用列表存储在一个阵列?
- 有没有更好的方法来做到这一点?
+1详细解释。通过在addEventListener中使用弱引用参数可能会破坏内存泄漏,但匿名处理程序方法无论如何都是不好的。如果可以在点击标记后完成,我也不会一次创建所有InfoWindows(这是问题作者的注释)。 – alxx 2011-01-23 13:48:33