无法添加 Phaser JS 状态
Can't add a Phaser JS state
我正在尝试在 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);
我遇到错误:
Uncaught TypeError: Cannot read property 'add' of undefined
at main.js:18
这通常意味着您正在尝试访问尚未定义的变量。
在代码中查找您在某些对象上使用 .add(
的位置。无论那个对象是什么,在代码运行时,它都没有定义,这意味着它没有用任何值初始化。
看起来您正确地遵循了文档中的示例 -
https://photonstorm.github.io/phaser-ce/Phaser.Game.html
In its most simplest form, a Phaser game can be created by providing the arguments to the constructor:
var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create });
In the example above it is passing in a State object directly. You can
also use the State Manager to do this:
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');
In the example above, 4 States are added to the State Manager, and
Phaser is told to start running the Boot state when it has finished
initializing. There are example project templates you can use in the
Phaser GitHub repo, inside the resources folder.
Instead of specifying arguments you can also pass a single object
instead:
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
。
Parameters:
state object null The default state object. A object
consisting of Phaser.State functions (preload, create, update, render)
or null.
状态管理器尚未初始化为 game.state
。尝试使用通过 new Phaser.Game()
调用传递状态的版本。
Phaser 2 和 Phaser 3 之间有很大的变化。截至目前,Phaser 2 的文档非常齐全,您找到的大多数示例代码都将使用它。 Phaser 3 文档仍在烘焙中。
查看您的代码,您忘记添加 ''。
game.state.start(GameState) -> 错误
game.state.start("GameState") -> 成功
我正在尝试在 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);
我遇到错误:
Uncaught TypeError: Cannot read property 'add' of undefined at main.js:18
这通常意味着您正在尝试访问尚未定义的变量。
在代码中查找您在某些对象上使用 .add(
的位置。无论那个对象是什么,在代码运行时,它都没有定义,这意味着它没有用任何值初始化。
看起来您正确地遵循了文档中的示例 - https://photonstorm.github.io/phaser-ce/Phaser.Game.html
In its most simplest form, a Phaser game can be created by providing the arguments to the constructor:
var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create });
In the example above it is passing in a State object directly. You can also use the State Manager to do this:
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');
In the example above, 4 States are added to the State Manager, and Phaser is told to start running the Boot state when it has finished initializing. There are example project templates you can use in the Phaser GitHub repo, inside the resources folder.
Instead of specifying arguments you can also pass a single object instead:
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
。
Parameters:
state object null The default state object. A object consisting of Phaser.State functions (preload, create, update, render) or null.
状态管理器尚未初始化为 game.state
。尝试使用通过 new Phaser.Game()
调用传递状态的版本。
Phaser 2 和 Phaser 3 之间有很大的变化。截至目前,Phaser 2 的文档非常齐全,您找到的大多数示例代码都将使用它。 Phaser 3 文档仍在烘焙中。
查看您的代码,您忘记添加 ''。
game.state.start(GameState) -> 错误 game.state.start("GameState") -> 成功