actionscript-3 - 在循环中创建具有不同参数的匿名函数

标签 actionscript-3 anonymous-function

我想制作一组循环按钮,并向它们添加一些事件,但匿名功能是相同的。我编写示例代码:

for(var i:int=0;i<5;i++)
{
    var button:SimpleButton = new SimpleButton(...);
    ...
    button.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void
    {
        trace(i);
    });
}

...

我想从点击按钮而不是 4,4,4,4 .. 跟踪 0,1,2,3..
你知道我该怎么做吗?

最佳答案

您遇到的问题是 ActionScript 不支持闭包。

换句话说,变量 i每个函数不会被复制到它自己的上下文中。所有函数都引用 i 的同一个实例.

更多信息在这里:
http://flex.sys-con.com/node/309329

为此,您需要一个生成函数的函数:

public function makeFunction(i:int):Function {
    return function(event:MouseEvent):void { trace(i); }
}

现在,您可以使用自己的上下文创建函数的新实例:
button.addEventListener(MouseEvent.CLICK, makeFunction(i));

关于actionscript-3 - 在循环中创建具有不同参数的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4530417/

相关文章:

actionscript-3 - 如何检查swf在AS3中是否已经失焦

javascript - 如何使用匿名函数使某些函数和变量在 Javascript 中全局可用?

matlab - 如何使用匿名函数优化 MATLAB 中的约束积分表达式?

javascript - 在网页上加载 Flash 横幅后添加 cookie

apache-flex - 用于数据可视化的 Flash vs. Flex vs. Actionscript

flash - 获取/设置函数和内联

javascript - 解释封装的匿名函数语法

java - 与 Java 集成的 Flash Builder

javascript - JS创建babel插件: how to get arguments of anonymous function

Matlab 函数处理可变和未知数量的输出