我正在使用Phaser.js构建html游戏。这可能更多是一个一般的JavaScript问题,但我使用Phaser作为上下文,因此我尝试使用处理程序设置按钮,这是main.js中的按钮定义:

var someParam = 2;
var btn = game.add.button(0, 0, 'playButton', actions.handler, this, 1, 0, 1);


在另一个名为actions.js的文件中,我定义了处理程序函数:

var handler = function(someParam) {
    console.log(someParam);
};
module.exports = {
    handler: handler
};


问题是如何将someParam传递给处理函数?

最佳答案

我不了解Phaser,但是在JavaScript中,您有两个可能的选择:

1)

game.add.button(0, 0, 'playButton', function(){
  actions.handler(someParam);
}, this, 1, 0, 1);


2)

game.add.button(0, 0, 'playButton',actions.handler.bind(this,someParam) , this, 1, 0, 1);


选项2会将函数绑定到someParam的特定值,因此,如果更改,则不会在处理程序中更改。

09-25 20:07