【问题标题】:Javascript Functioncall Socket.io and PhaserJavascript 函数调用 Socket.io 和 Phaser
【发布时间】:2015-07-15 12:15:23
【问题描述】:

我对 Phaser 的函数调用有疑问。我是 Javascript 菜鸟,不知道我做错了什么。

这是我的代码的关键部分,所有代码都在同一个文件中。

BasicGame.Multiplayer = function (game) {
};

  BasicGame.Multiplayer.prototype = {

        create: function(){
            this.socket = io.connect('localhost:3010');
            this.socket.on('startGame', function () {
                console.log('ShouldStartGame');
                this.createActualGame();
            });
},

createActualGame: function(){
        // Define constants
       }
}

我的问题是函数 this.createActualGame 没有调用错误:“TypeError: this.createActualGame is not a function”。 但是控制台日志工作正常。

没有 socket.on(...) 代码可以正常工作,并且使用语句“this.createActualGame()”调用该函数,但是在 socket.on(...) 中它不起作用并且我不知道为什么,也不知道如何解决。非常感谢您的帮助。

诚挚的问候, 桑德曼爵士

【问题讨论】:

    标签: javascript function socket.io phaser-framework


    【解决方案1】:

    试试:

        create: function(){
            this.socket = io.connect('localhost:3010');
            this.socket.on('startGame', function () {
                console.log('ShouldStartGame');
                this.createActualGame();
            }.bind(this));
        },
    

    或者只是:

    BasicGame.Multiplayer.createActualGame();

    【讨论】:

    • 嘿,感谢您的快速回复,但两个选项都不起作用。对于 .bind 选项,我收到错误“TypeError: socket.on(...).bind is not a function Multiplayer.js:18:0 TypeError: this.createActualGame is not a function”和 BasicGame.Multiplayer。 createActualGame() 我得到相同的“TypeError:this.createActualGame 不是函数”
    【解决方案2】:
    socket = io.connect('localhost:3010');
            socket.on('startGame', function () {
                console.log('ShouldStartGame');
                this.createActualGame();
            }.bind(this));
    

    是解决问题的方法。 (你把括号弄错了)

    【讨论】:

      猜你喜欢
      • 2015-07-05
      • 1970-01-01
      • 2020-11-11
      • 2014-10-24
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多