代碼存儲的功能
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