以下代码将仅将循环中的最后一个 Widget 添加到所有侦听器函数。所有函数都会在最后一个对象上调用 toggleShow()。
为什么会发生这种情况,有没有办法让每个 Widget 对象在相应的函数中被引用?
for each (var w:Widget in workspace.getWidgetList()) {
var widgetShow:NativeMenuItem = menu.addItem(new NativeMenuItem("Show " + w.title));
widgetShow.addEventListener(Event.SELECT, function():void {
w.toggleShow();
});
}