变量可以传递给函数名吗?

时间:2011-06-30 01:34:44

标签: actionscript-3

如果我滥用术语,我是新手编程并且在前面道歉。

在'for循环'中,我想为一系列按钮添加一个事件监听器。对于每个按钮,我想定义一个不同的功能。是否可以在命名函数时传递变量?

我的按钮都按顺序命名了实例名称。

这是我的代码:

for (var cBut:int = 1; cBut < 4; cBut++)
{
this["c" + cBut].addEventListener(MouseEvent.CLICK, ["orangeValue" + cBut]);
}

结果错误: TypeError:错误#1034:类型强制失败:无法将[] @ 42f50a89转换为函数。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这就是说“向this["c" + cBut]添加一个事件监听器。监听MouseEvent.CLICK,当发生这种情况时,激活函数new Array( "orangeValue" + cBut )。数组无法处理函数,并且是该函数中唯一的元素array将是一个String。

你想要的是this["orangeValue" + cBut].<whatever function handles click>。 (功能是监听AS3中事件所需的功能。这与AS2不同)。你最好的选择实际上也是使用帮助函数 - 它保证没有范围问题:

for (var cBut:int = 1; cBut < 4; cBut++)
{
    helper( cBut );
}
function helper( cBut:int ):void
   this["c" + cBut].addEventListener(MouseEvent.CLICK, 
                                     this["orangeValue" + cBut].clickHandler);
}