2010-08-04 46 views
1

在AS3中,我加入事件侦听器,然后附接匿名函数它:inf actionscript 3(as3),如何在匿名函数中传递参数?

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

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

如何将参数或值传递给匿名函数? (如翻滚,我认为,预计只有一个变量)

回答

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

而不是依靠一个指标,是不是很简单(更好)获取事件的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) 

而且,现在我想起来了,你甚至不用做这在一个匿名函数所有如果你使用事件模型。

+0

是的,这就是对的! :) – svirk 2010-08-04 15:12:13

相关问题