Определенная переменная класса, показанная как неопределенная в функции - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь написать простую игру со змеями, и я учусь JavaScript, как я это делаю. У меня есть отдельный файл для моего класса Snake, который я хочу использовать в основном файле. Проблема в том, что я объявил несколько переменных в начале класса для использования в моих функциях, но они являются хитом или промахом.

function Snake() {
  this.move_y = 0;
  this.move_x = 0;
  this.height = 50;
  this.width = 50;
  this.speed = 20;

  this.moveRight = function() {
    this.speed = 20;
    console.log(this.move_x); //Outputs 0
    this.move_x += this.speed;
    console.log(this.speed); //Outputs 20

    //document.getElementById("head").style.left = this.move_x + "px";
  }

  this.moveDown = function() {
    this.speed = 20;
    console.log(this.move_y); //Outputs "Undefined"
    this.move_y += this.speed;
    console.log(this.move_y); //Outputs "NaN"

    //document.getElementById("head").style.top = this.move_y + "px";
  }
}

var dangerNoodle = new Snake();
dangerNoodle.moveRight();
dangerNoodle.moveDown();

Этот файл, который я использую, использует класс:

"use strict";

var move_x = 0;
var speed_x = 0;
var repeat;
var snakeHead = document.getElementById("head");
var snake;

window.onload = setUp;

function setUp()
{
    snake = new Snake();

    snakeHead.style.width = snake.width + "px";
    snakeHead.style.height = snake.height + "px";

    document.onkeydown = move;
}

function move(e)
{
    if (e.keyCode == 39)
    {
      clearInterval(repeat);
      repeat = setInterval(snake.moveRight, 1000);
    }
    else if (e.keyCode == 40)
    {
      clearInterval(repeat);
      repeat = setInterval(snake.moveDown, 1000);
    }
}

Почему моя переменная move_x работает так, как задумано, но моя move_y переменная не?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...