我目前正在尝试与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>
答案 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>
。我相信浏览器应该处理这些缺失的事实,但是即使是教程工作也要遵循这个好习惯。