在侦听器内调用函数的问题(onClick)

Sco*_*rup 2 javascript function phaser-framework

我在这里寻找答案,但我找不到任何有用的东西.

基本上我正在制作塔防游戏.每个塔都是动态创建的并且已启用onClick.在onClick监听器中,我试图在类中调用一个方法.

例如,玩家点击塔并可以选择升级

但是,侦听器中的方法是输出未定义的函数.我知道这显然与我的范围有关.但我无法弄清楚我错过了什么?

当然应该是这样的:

someListener: function(){
  this.game.doSomeOtherFunction();
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过console.log并且肯定会调用someListener,但是内部的方法是未定义的.

谢谢,

ska*_*ay- 5

它无法正常工作,因为this在回调中相应地更改了上下文.你可以这样做:

var self = this;
...
someListener: function(){
  self.game.doSomeOtherFunction(); 
}
...
Run Code Online (Sandbox Code Playgroud)

或者只是你也可以这样做:

someListener: (function () {
       var callback = function(){
          this.game.doSomeOtherFunction(); 
       }
     return callback.bind(this);
}())
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.