我试图在Phaser中添加并启动一个状态,但是我得到了一个奇怪的错误。以下是代码:
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属性'add‘
发布于 2018-03-22 15:34:06
Phaser 2和Phaser 3之间有很大的变化。到目前为止,Phaser 2已经有了很好的文档化,并且您发现的大多数示例代码都将使用它。相位器3的文档还在烘烤。
发布于 2018-03-21 16:38:29
这通常意味着您正在尝试访问一个尚未定义的变量。
在代码中寻找在某些对象上使用.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对象。您还可以使用状态管理器执行以下操作:
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在启动状态完成初始化后开始运行。您可以在资源文件夹中的Phaser GitHub回购中使用示例项目模板。 除了指定参数之外,您还可以传递一个对象:
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对象空默认状态对象。由Phaser.State函数(预加载、创建、更新、呈现)或null组成的对象。
状态管理器尚未初始化为game.state。尝试使用使用new Phaser.Game()调用传递状态的verison。
发布于 2020-04-08 13:54:39
查看您的代码时,您忘记添加“”。
game.state.start(GameState) -> error game.state.start("GameState") ->成功
https://stackoverflow.com/questions/49411914
复制相似问题