0

ボタン配列内のすべてのボタンにイベント リスナーを追加しようとしています。ループ内でボタンを作成できますが、イベントリスナーを追加しようとすると、次のエラーが発生します。

TypeError: Error #2007: Parameter listener must be non-null. at flash.events::EventDispatcher/addEventListener() at Main()

このイベントを別の配列に追加できますが、これはできません。これらのボタンをステージに配置し、as ファイルで参照しているインスタンス名を付けました。私は学校で AS3 を学んでいるので、これはおそらく非常に明白な問題ですが、まだコードをデバッグする資格がありません:S ご協力ありがとうございます。

//array of buttons and making them buttons
var buttons:Array = [armButton, lobeButton, beakButton, crotchButton, earButton, hairButton, legButton, shoulderButton, spineButton, tailButton, tearButton, eyeButton];

for(var b:int = 0; b<buttons.length; b++){
    buttons[b].buttonMode = true;
    buttons[b].addEventListener(MouseEvent.CLICK, clickMe);
}

function clickMe(e:MouseEvent):void{
    trace("hello");
}
4

2 に答える 2

0

定義セクションとパラメーター セクションの両方で「clickMe」関数の名前を確認し、まったく同じ文字が使用されていることを確認します (文字が別のコード テーブルの文字と間違われることがあります)。ループが実行されている瞬間に "clickMe" 式が null であるため、エラーが発生します。

var buttons:Array = [armButton, lobeButton, beakButton, crotchButton, earButton, hairButton, legButton, shoulderButton, spineButton, tailButton, tearButton, eyeButton];

for(var b:int = 0; b<buttons.length; b++){
    buttons[b].buttonMode = true;
    // what is the output of the following expression?
    trace(clickMe) // should be "function Function() {}"
    buttons[b].addEventListener(MouseEvent.CLICK, clickMe);
}

function clickMe(e:MouseEvent):void{
    trace("hello");
}
于 2012-12-07T18:21:35.497 に答える
0

addEventListener 行の clickMe は null です。

ここにすべてのコードが表示されていないのではないかと思います。そのコードは同じファイルにまとめられていますか? それとも、重要だと思った部分だけを切り取って貼り付けましたか?

于 2012-12-07T23:43:09.967 に答える