如果我滥用术语,我是新手编程并且在前面道歉。
在'for循环'中,我想为一系列按钮添加一个事件监听器。对于每个按钮,我想定义一个不同的功能。是否可以在命名函数时传递变量?
我的按钮都按顺序命名了实例名称。
这是我的代码:
for (var cBut:int = 1; cBut < 4; cBut++)
{
this["c" + cBut].addEventListener(MouseEvent.CLICK, ["orangeValue" + cBut]);
}
结果错误: TypeError:错误#1034:类型强制失败:无法将[] @ 42f50a89转换为函数。
提前感谢您的帮助。
答案 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);
}