我正在制作2D平台游戏,其中我使用Phaser框架(版本3.15.1)来简化生活,并为游戏的第一阶段提供了平铺地图。我已经从Tiled中将地图导出为.json
文件,并读入了主要的JS文件。但是,在我的索引HTML文件(从中运行所有JS文件)中,出现以下错误:
Uncaught TypeError: Cannot read
property 'add' of index.html:17 undefined
at index.html:17
at index.html:20
以下是相关代码:
<head>
<meta charset="UTF-8">
<title>Nightly Neighbours Using Phaser</title>
<script type="text/javascript" src = "js/phaser.js"></script>
<script type="text/javascript" src = "js/phaser-arcade-physics.js">
</script>
<script type="text/javascript" src = "js/Boot.js"></script>
<script type="text/javascript" src = "js/Preload.js"></script>
<script
type="text/javascript"src="js/NightlyNeighbours1WithPhaser.js">
</script>
<script type="text/javascript">
(function() {
game = new Phaser.Game(window.innerWidth *
window.devicePixelRatio,
window.innerHeight * window.devicePixelRatio, Phaser.AUTO);
game.state.add("Boot", Boot);
game.state.add("Preload", Preload);
game.state.add("NightlyNeighbours1WithPhaser", Main);
game.state.start("Boot");
})();
</script>
</head>
错误指向lines 17 - 20
非常感谢!
答案 0 :(得分:0)
在Phaser 3中,使用state
改为使用scene
。根据您的代码,看起来您正在将Phaser 2代码与Phaser 3库一起使用。
有一个很棒的官方教程(从代码方面开始Part 5,因为它似乎已经设置好了环境),涵盖了Phaser 3。
在该教程中,Phaser.Game
的定义类似于以下内容:
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 200 }
}
},
scene: {
preload: preload,
create: create
}
};
var game = new Phaser.Game(config);
您还可以通过调用game.scene.add(...)
向游戏添加新场景。