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 侦听器,它对每个按钮都执行相同的操作(但在功能上它会执行不同的功能)

[索引.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);
}

我有一个错误

[未捕获的类型错误:无法读取未定义的属性“setFrames”]

我的按钮数组是在一开始就声明的

button = new Array();

有什么建议么?

4

1 回答 1

1

您的代码有两个问题:

1) 您在 Button 构造函数中调用 actionOnClick(i) 函数,这不是必需的参数类型(Button 在这里需要对函数的引用)。

2) 您的 actionOnClick 函数假定按钮单击事件将传递一个 ID,但它不会。在 Phaser 中,将发送的第一个参数是调用回调的对象。

考虑到这两件事,以下方法应该有效:

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 回答