我正在使用Phaser目录在Javascript中制作一个非常基本的游戏。我以前曾多次与Phaser进行过游戏,但这一次我遇到了一个对我来说很新的问题,而且我以前从未有过这个问题。我在网上查了一下,似乎没有人遇到过这个问题。在移相器中,它告诉我我的" x"当我将x称为位置时未定义。我如何将x定义为一个位置或我面临的错误?我目前在Mac上使用VS Code和Chrome浏览器以及最新版本的Phaser。 谢谢您的帮助, Murdoc
var game = new Phaser.Game(640, 360, Phaser.Auto);
var car1;
var GameState = {
preload: function(){
game.load.image("thecar1", "../assets/car_1.png");
//game.load.image("thecar2", "../assets/car_2.png");
//game.load.image("backgroundImg", "../assets/thebackground.png");
},
create: function(){
var car1 = game.add.sprite(200, 270, "thecar1");
//var car2 = game.add.sprite(200, 270, "thecar2");
/*game.input.keyboard.addKey(Phaser.Keyboard.W)
.onDown.add(car1Up);*/
game.input.keyboard.addKey(Phaser.Keyboard.A)
.onDown.add(car1Left);
/*game.input.keyboard.addKey(Phaser.Keyboard.S)
.onDown.add(car1Down);
game.input.keyboard.addKey(Phaser.Keyboard.D)
.onDown.add(car1Right);*/
},
update: function(){
}
};
function car1Left() {
car1.x = car1.x + 10;
}
game.state.add('GameState', GameState);
game.state.start('GameState');

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Pixel Soccer</title>
<script src="phaser.js"></script>
<script src="main.js"></script>
<style>
body {
background: white;
margin: 0;
padding: 0;
}
body canvas {
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
</body>
</html>
&#13;
答案 0 :(得分:1)
您要两次声明相同的变量。你正在处理所谓的&#34;变量阴影&#34;。当您在var car1 = game.add.sprite(200, 270, "thecar1");
函数中执行create()
时,范围将更改为仅函数,并且具有您指定给它的精灵的变量仅在该函数的范围内可用。该错误基本上告诉您在函数作用域之外声明的var car1
是未定义的(它是)。尝试在car1 = game.add.sprite(200, 270, "thecar1");
内进行create()
,这应该没问题。