在移相器中定义位置

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"); 应该没问题。