带有 addEventListener 的 Phaser

Phaser with addEventListener

我正在尝试捕获点击事件并更改游戏状态,但我经常遇到 "undefined" 错误。我使用此代码添加游戏状态:

var game = new Phaser.Game(800, 600, Phaser.AUTO, 'canvas');
game.state.add('Boot', Boot);
game.state.add('Level_1', Level_1);
game.state.start('Boot');

这里我运行游戏介绍并尝试捕捉点击事件

var button;
var Boot = function(game) {};

Boot.prototype = {
preload: function() {
    this.load.image('logo','img/logo_allcomp_white.png');
    this.load.image('welcome','img/welcome.png');
    this.load.image('gradient','img/gradient.png');
},

create: function() {
    this.add.sprite(0,0,'gradient');
    this.stage.backgroundColor = '#ffffff';
    this.add.sprite(20,20,'logo');
    var cutters = this.add.tileSprite(0, 0, this.game.width, this.game.height,'welcome');
    cutters.autoScroll(-20,0);
    button = document.getElementById('startbtn');
    button.addEventListener('click',this.updateButton);
},

updateButton: function() {
this.game.state.start('Level_1');
}
};

我无法让它工作。这甚至可以与 canvas 之外的其他 DOM 元素交互吗?将此按钮添加到 canvas 对我不起作用。我必须把我的控制面板放在外面

在您的 updateButton 中,您将游戏引用为 this.game,而在函数范围内,this 指的是被按下的按钮,从而使 this.game 未定义。您可以使用 game.state.start('Level_1');

调用您的游戏

我为你制作了一支笔:http://codepen.io/kozulowski/pen/YPvyzW