我是编程新手,如果我误用了术语,请提前道歉。
在"for循环"中,我想为一系列按钮添加一个事件侦听器。对于每个按钮,我想定义一个不同的功能。在命名函数时,是否可以传递变量?
我的按钮都有按顺序命名的实例名称。
这是我的代码:
for (var cBut:int = 1; cBut < 4; cBut++)
{
this["c" + cBut].addEventListener(MouseEvent.CLICK, ["orangeValue" + cBut]);
}
以及由此产生的错误:TypeError:错误#1034:类型强制失败:无法将[]@42f50a89转换为Function。
提前感谢您的帮助。
也就是说"向this["c" + cBut]
添加一个事件侦听器。侦听MouseEvent.CLICK,当发生这种情况时,会触发函数new Array( "orangeValue" + cBut )
。数组无法处理函数,该数组中唯一的元素将是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);
}