我正在使用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传递给处理函数?
答案 0 :(得分:1)
我不了解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
的特定值,因此如果更改,则不会在处理程序中更改。