0

押したボタンの名前を表示するシステムを作ろうとしています。ボタン名は配列に入れられますが、配列に入力された最後の項目しか認識しませんでした。助けていただければ幸いです。

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.

}
4

2 に答える 2

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.
}
于 2012-11-05T03:07:11.240 に答える
0

indexここで作成される変数は 1 つ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);
}

このスレッドもチェックすることをお勧めします。

于 2012-11-04T16:13:59.780 に答える