inf actionscript 3(as3),如何在匿名函数中传递参数?

时间:2010-08-04 14:36:33

标签: flex actionscript-3

在as3中,我添加了事件监听器,然后将匿名函数附加到它:

myBox.addEventListener(MouseEvent.ROLL_OVER, 功能(E:MouseEvent)方法:无效 { Alert.show(计数,'警报框'); );

现在这整段代码循环了n次。现在,我有了我的盒子,每当我将鼠标放在盒子上时,它应该提醒你的名字。但是,我看到的是每个框都使用了count的最后一个值。

如何将参数或值传递给匿名函数? (作为翻转,我相信,只需要一个变量)

2 个答案:

答案 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)

而且,现在我想到了它,如果你使用事件模型,你甚至根本不需要使它成为一个匿名函数。