在移相器中定义位置
Defining Position in Phaser
我正在 Javascript 使用 Phaser Directory 制作一款非常基础的游戏。我以前用 Phaser 做过很多次游戏,但这次我遇到了一个我以前从未遇到过的新问题。我在网上查了一下,似乎没有人遇到过这个问题。在移相器中,当我将 x 称为位置时,它告诉我我的 "x" 未定义。我将如何将 x 定义为一个位置或者我面临什么错误?我目前在 mac 上使用 VS Code,使用 Chrome 浏览器和最新版本的 Phaser。
谢谢您的帮助,
默多克
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>
您声明了同一个变量两次。您正在处理所谓的 "variable shadowing"。当您在 create()
函数中执行 var car1 = game.add.sprite(200, 270, "thecar1");
时,范围会更改为 function-only 并且您分配给它的精灵的变量仅在该函数的范围内可用。该错误基本上是在告诉您您在函数范围之外声明的 var car1
未定义(确实如此)。尝试在 create()
中执行 car1 = game.add.sprite(200, 270, "thecar1");
应该没问题。
我正在 Javascript 使用 Phaser Directory 制作一款非常基础的游戏。我以前用 Phaser 做过很多次游戏,但这次我遇到了一个我以前从未遇到过的新问题。我在网上查了一下,似乎没有人遇到过这个问题。在移相器中,当我将 x 称为位置时,它告诉我我的 "x" 未定义。我将如何将 x 定义为一个位置或者我面临什么错误?我目前在 mac 上使用 VS Code,使用 Chrome 浏览器和最新版本的 Phaser。 谢谢您的帮助, 默多克
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>
您声明了同一个变量两次。您正在处理所谓的 "variable shadowing"。当您在 create()
函数中执行 var car1 = game.add.sprite(200, 270, "thecar1");
时,范围会更改为 function-only 并且您分配给它的精灵的变量仅在该函数的范围内可用。该错误基本上是在告诉您您在函数范围之外声明的 var car1
未定义(确实如此)。尝试在 create()
中执行 car1 = game.add.sprite(200, 270, "thecar1");
应该没问题。