Phaser 3:无法读取未定义的 属性“$”
Phaser 3 : Cannot read property '$' of undefined
所以我正在使用 Phaser 3 进行游戏开发,控制台中出现了这个错误:
Cannot read property 'startSystem' of undefined
这是我的HTML代码
<!DOCTYPE html>
<html lang="en">
<head>
<style>
* {
padding:0px;
margin: 0px;
overflow: hidden;
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Shoot'Em</title>
<script src="phaser.min.js"></script>
<script src="game.js"></script>
</head>
<body>
</body>
</html>
这是我的 Javascipt/Phaser 代码:
var config = {
type: Phaser.AUTO,
width: window.innerWidth,
height:window.innerHeight,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 300 },
debug: false
}
},
scene: {
preload: preload,
create: create,
update: update
}
};
var game = new Phaser.Game(config);
var platforms
function preload ()
{
this.load.image('player1', 'Player.png')
this.load.image('player2', 'Player2.png')
this.load.image('platform', 'Platform.png')
}
function create ()
{
----➤game.physics.startSystem(Phaser.Physics.ARCADE);<---
//Create Platforms
platforms.create(400, 568, 'platform').setScale(2).refreshBody();
platforms.create(600, 400, 'platform').setScale(0.1).refreshBody();
platforms.create(50, 250, 'platform').setScale(0.1).refreshBody();
platforms.create(750, 220, 'platform').setScale(0.1).refreshBody();
//Player 1
player1 = this.physics.add.sprite(100, -200, 'player1');
player1.setBounce(0.95);
player1.setCollideWorldBounds(true);
player1.body.setGravityY(300);
this.physics.add.collider(player1, platforms);
//Player 2
player2 = this.physics.add.sprite(300, -200, 'player2');
player2.setBounce(0.95);
player2.setCollideWorldBounds(true);
player2.body.setGravityY(300);
this.physics.add.collider(player2, platforms);
emitter = game.add.emitter(0, 0, 100);
emitter.makeParticles('player1');
emitter.gravity = 0;
game.input.onDown.add(particleBurst, this);
}
function particleBurst(pointer) {
emitter.x = pointer.x;
emitter.y = pointer.y;
emitter.start(true, 2000, null, 10);
}
停止标志所在的地方就是程序停止的地方。
我在本地主机上 运行。
仅供参考,代码中使用的所有文件都在同一个文件夹中
欢迎任何帮助!
我在您的示例中发现了一些错误,也许这些步骤将有助于修复它:
- 您根本不需要调用
game.physics.startSystem(Phaser.Physics.ARCADE);
。只需删除此行。
- 添加
update
功能
platforms.create
将失败,因为 platforms
未初始化。这里是example 关于群组
game.add
也会失败 - 您不需要 game
,使用 this
访问当前场景。
Phaser 2 中有很多使用 game
的示例,但在 Phaser 3 中,您只需从 create
和 update
访问场景即可添加新对象。
所以我正在使用 Phaser 3 进行游戏开发,控制台中出现了这个错误:
Cannot read property 'startSystem' of undefined
这是我的HTML代码
<!DOCTYPE html>
<html lang="en">
<head>
<style>
* {
padding:0px;
margin: 0px;
overflow: hidden;
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Shoot'Em</title>
<script src="phaser.min.js"></script>
<script src="game.js"></script>
</head>
<body>
</body>
</html>
这是我的 Javascipt/Phaser 代码:
var config = {
type: Phaser.AUTO,
width: window.innerWidth,
height:window.innerHeight,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 300 },
debug: false
}
},
scene: {
preload: preload,
create: create,
update: update
}
};
var game = new Phaser.Game(config);
var platforms
function preload ()
{
this.load.image('player1', 'Player.png')
this.load.image('player2', 'Player2.png')
this.load.image('platform', 'Platform.png')
}
function create ()
{
----➤game.physics.startSystem(Phaser.Physics.ARCADE);<---
//Create Platforms
platforms.create(400, 568, 'platform').setScale(2).refreshBody();
platforms.create(600, 400, 'platform').setScale(0.1).refreshBody();
platforms.create(50, 250, 'platform').setScale(0.1).refreshBody();
platforms.create(750, 220, 'platform').setScale(0.1).refreshBody();
//Player 1
player1 = this.physics.add.sprite(100, -200, 'player1');
player1.setBounce(0.95);
player1.setCollideWorldBounds(true);
player1.body.setGravityY(300);
this.physics.add.collider(player1, platforms);
//Player 2
player2 = this.physics.add.sprite(300, -200, 'player2');
player2.setBounce(0.95);
player2.setCollideWorldBounds(true);
player2.body.setGravityY(300);
this.physics.add.collider(player2, platforms);
emitter = game.add.emitter(0, 0, 100);
emitter.makeParticles('player1');
emitter.gravity = 0;
game.input.onDown.add(particleBurst, this);
}
function particleBurst(pointer) {
emitter.x = pointer.x;
emitter.y = pointer.y;
emitter.start(true, 2000, null, 10);
}
停止标志所在的地方就是程序停止的地方。 我在本地主机上 运行。 仅供参考,代码中使用的所有文件都在同一个文件夹中
欢迎任何帮助!
我在您的示例中发现了一些错误,也许这些步骤将有助于修复它:
- 您根本不需要调用
game.physics.startSystem(Phaser.Physics.ARCADE);
。只需删除此行。 - 添加
update
功能 platforms.create
将失败,因为platforms
未初始化。这里是example 关于群组game.add
也会失败 - 您不需要game
,使用this
访问当前场景。
Phaser 2 中有很多使用 game
的示例,但在 Phaser 3 中,您只需从 create
和 update
访问场景即可添加新对象。