oni*_*io9 10 anonymous-function actionscript-3
我想制作循环按钮组,并向它们添加一些事件,但匿名函数是相同的.我写了示例代码:
for(var i:int=0;i<5;i++)
{
var button:SimpleButton = new SimpleButton(...);
...
button.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void
{
trace(i);
});
}
...
Run Code Online (Sandbox Code Playgroud)
我想从点击按钮而不是4,4,4,4跟踪0,1,2,3 ..你知道我怎么能做到这一点?
Bri*_*sio 19
您遇到的问题是ActionScript不支持闭包.
换句话说,变量i不会被复制到每个函数的自己的上下文中.所有函数都引用相同的实例i.
更多信息请访问:http: //flex.sys-con.com/node/309329
为此,您需要一个生成函数的函数:
public function makeFunction(i:int):Function {
return function(event:MouseEvent):void { trace(i); }
}
Run Code Online (Sandbox Code Playgroud)
现在,您使用自己的上下文创建函数的新实例:
button.addEventListener(MouseEvent.CLICK, makeFunction(i));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1194 次 |
| 最近记录: |