我试图在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
答案 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”)->成功