0

質問と5つの回答のバリエーションを表示する簡単なクイズゲームを作成しようとしています.

私は Phaser.js を使用していますが、JavaScript 全般に適用できると思います。

これが5つのボタンを作成する私の関数です

[char_db.js]

for (var i = 0; i < 5; i++) {
    button[i] = game.add.button((30+10*i), (30+5*i), 'buttons', actionOnClick(i), this, 1, 0, 2);
}

そして、これが私のonclickリスナーで、各ボタンに対してかなり同じことをしています(ただし、機能では異なる機能を実行します)

[index.html]

function actionOnClick (id) {
   //  Manually changing the frames of the button, i.e, how it will look when you play with it
   button[id].setFrames(2, 1, 3);
}

エラーが発生しました

[Uncaught TypeError: 未定義のプロパティ 'setFrames' を読み取れません]

私のボタン配列は非常に最初に宣言されました

button = new Array();

助言がありますか?

4

1 に答える 1

1

コードには 2 つの問題があります。

1) Button コンストラクターで actionOnClick(i) 関数を呼び出していますが、これは必須パラメーターの型ではありません (Button はここで関数への参照を想定しています)。

2) actionOnClick 関数は、ID が Button クリック イベントによって渡されることを想定していますが、そうではありません。Phaser では、送信される最初のパラメーターは、コールバックを呼び出したオブジェクトです。

これら2つのことを念頭に置いて、次のアプローチが機能するはずです。

for (var i = 0; i < 5; i++) {
  button[i] = game.add.button((30+10*i), (30+5*i), 'buttons', actionOnClick, this, 1, 0, 2);
}

function actionOnClick (button) {
   button.setFrames(2, 1, 3);
}
于 2014-06-02T02:32:41.403 に答える