AS3“为每个”阵列问题

时间:2012-11-04 15:52:59

标签: arrays actionscript-3

我正在尝试创建一个显示您按下的按钮名称的系统。 按钮名称被放入一个数组中,但它只识别输入到数组中的最后一项。 非常感谢帮助。

var items:Array = [a, b, c]; //The name of each button

for each(var index in items) 
{
    index.addEventListener(MouseEvent.CLICK, mouseClickHandler);
}

function mouseClickHandler(event:MouseEvent):void
{
    trace(index.name); //Should display the name of any of the buttons clicked.

}

2 个答案:

答案 0 :(得分:3)

您应该追踪currentTarget名称:

var items:Array = [a, b, c]; //The name of each button

for each(var index in items) {
    index.addEventListener(MouseEvent.CLICK, mouseClickHandler);
}

function mouseClickHandler(event:MouseEvent):void {
    trace(event.currentTarget.name); //Should display the name of any of the buttons clicked.
}

答案 1 :(得分:0)

此处只创建了一个index变量 - 显然,mouseClickHandler函数只能使用其当前值。如果需要引用特定值(在每个循环步骤中给出),则需要以这种或那种方式对它们进行本地化:

function generateClickHandler(index:someType) {
  return function(event:MouseEvent):void { trace(index.name); }
}

...    
for each(var index in items) 
{
    index.addEventListener(MouseEvent.CLICK, generateClickHandler(index);
}

我建议您同时查看thread