添加状态的Phaser3会引发错误。无法读取未定义

时间:2018-04-21 13:37:18

标签: javascript html5 phaser-framework

我目前正在尝试与Phaser制作游戏,我正在关注在线教程。即使我们有相同的代码,视频中的人也不会收到此错误。它可能与Phaser版本有关吗?或者是什么导致了这个错误?

这是错误:未捕获的TypeError:无法读取未定义的属性'add'

以下是抛出它的html文件的代码。 @ game.state.add('Boot',Game.Boot);

<!doctype html>
<html>
	<meta charset="UTF-8" />
	<title>My example game</title>
	<!-- <script src="//cdn.jsdelivr.net/npm/phaser@3.2.1/dist/phaser.js"></script> -->
	<script src="phaser.js"></script>
	<script src="Boot.js"></script>
	<script src="Preloader.js"></script>
	<script src="MainMenu.js"></script>
	<script src="Level1.js"></script>
<body>
	<script type="text/javascript">
		window.onload = function() {
			var game = new Phaser.Game(800, 600, Phaser.CANVAS, '');

			game.state.add('Boot', Game.Boot); // <----
			game.state.add('Preloader', Game.Preloader);
			game.state.add('MainMenu', Game.MainMenu);
			game.state.add('Level1', Game.Level1);

			game.state.start('Boot');

			console.log("Done!");
		};
	</script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

根据您遗失的head中的评论和问题,看起来您正在使用Phaser 3.

在Phaser 3中,州经理被场景取代。因此,我将验证您是否正在引用Phaser 2(理想情况下是CE)或3.由于phaser.state未定义,因此建议使用版本3.

如果您想继续使用Phaser 3,请查看https://phaser.io/tutorials/making-your-first-phaser-3-game上的官方教程。

您还应该在标记中添加<head></head>。我相信浏览器应该处理这些缺失的事实,但是即使是教程工作也要遵循这个好习惯。