在as3中,我添加了事件监听器,然后将匿名函数附加到它:
myBox.addEventListener(MouseEvent.ROLL_OVER, 功能(E:MouseEvent)方法:无效 { Alert.show(计数,'警报框'); );
现在这整段代码循环了n次。现在,我有了我的盒子,每当我将鼠标放在盒子上时,它应该提醒你的名字。但是,我看到的是每个框都使用了count的最后一个值。
如何将参数或值传递给匿名函数? (作为翻转,我相信,只需要一个变量)
答案 0 :(得分:5)
您需要通过执行函数来创建新范围:
for (var i:int = 0; i<10; i++)
{
(function(count:int):void
{
myBox.addEventListener(MouseEvent.ROLL_OVER,
function(e:MouseEvent):void { Alert.show(count, 'Alert Box'); });
})(i);
}
答案 1 :(得分:1)
获取事件的currentTarget并获取其中一个成员的值不是更简单(并且更好),而不是依赖于索引吗?
myBox.addEventListener(MouseEvent.ROLL_OVER,
function(e:MouseEvent):void
{
Alert.show(UIComponent(e.currentTarget).name, 'Alert Box');
);
如果你绝对必须引用索引,你可以通过
得到它UIComponent(e.currentTarget).parent.getChildIndex(e.currentTarget)
而且,现在我想到了它,如果你使用事件模型,你甚至根本不需要使它成为一个匿名函数。