无法添加Phaser JS状态

时间:2018-03-21 16:37:00

标签: javascript phaser-framework

我试图在Phaser JS中添加并启动状态,但我得到了一个奇怪的错误。这是代码:

var game = new Phaser.Game(800, 600, Phaser.AUTO);

var GameState = {
preload: function(){
},

create: function(){
},

update: function(){
}

};

game.state.add('GameState', GameState);
game.state.start(GameState);

我收到错误:

  

未捕获的TypeError:无法读取属性'添加'未定义的       在main.js:18

3 个答案:

答案 0 :(得分:1)

这通常意味着您正在尝试访问尚未定义的变量。

在代码中查找某个对象上使用.add(的位置。该对象是什么,在代码运行时,它没有被定义,这意味着它没有被任何值初始化。

您好像正确地按照文档中的示例进行操作 - https://photonstorm.github.io/phaser-ce/Phaser.Game.html

  

以最简单的形式,可以通过向构造函数提供参数来创建Phaser游戏:

var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create });
  

在上面的示例中,它直接传入State对象。您可以   也可以使用State Manager来执行此操作:

var game = new Phaser.Game(800, 600, Phaser.AUTO);
game.state.add('Boot', BasicGame.Boot);
game.state.add('Preloader', BasicGame.Preloader);
game.state.add('MainMenu', BasicGame.MainMenu);
game.state.add('Game', BasicGame.Game);
game.state.start('Boot');
  

在上面的示例中,将4个状态添加到状态管理器中,并且   Phaser被告知在完成后开始运行Boot状态   初始化。您可以在中使用示例项目模板   Phaser GitHub repo,在资源文件夹中。

     

您也可以传递单个对象,而不是指定参数   代替:

var config = {
    width: 800,
    height: 600,
    renderer: Phaser.AUTO,
    antialias: true,
    multiTexture: true,
    state: {
        preload: preload,
        create: create,
        update: update
    }
}

var game = new Phaser.Game(config);

但是文档是矛盾的,因为它说state默认为null

  

参数:

     

state object null默认状态对象。一个对象   由Phaser.State函数组成(预加载,创建,更新,渲染)   或null。

州经理尚未初始化为game.state。尝试使用new Phaser.Game()调用传递状态的verison。

答案 1 :(得分:1)

Phaser 2和Phaser 3之间有很大的变化。截至目前,Phaser 2已有很好的文档记录,您找到的大多数示例代码都将使用它。 Phaser 3文档仍在烘焙中。

答案 2 :(得分:1)

在代码中查找时忘记了添加”。

game.state.start(GameState)->错误 game.state.start(“ GameState”)->成功