У меня есть объявленная переменная, которую код не распознает. Почему это?

#javascript #phaser-framework

#javascript #phaser-фреймворк

Вопрос:

Я программирую игру, и это ее часть. Я хочу, чтобы программа циклически просматривала разные изображения запущенного спрайта, которые я загрузил. Я создал переменную, чтобы программа знала, какое изображение отображается на экране запущенного символа. Программа не распознает, что это объявленная переменная. Я просто совершаю простую ошибку с Javascript?

Я попытался переместить объявление переменной вокруг моего кода и поместить в него разные вещи. Кажется, ничего не работает.

 class Example1 extends Phaser.Scene {
    constructor() {
        super({key: "Example1"});
}

//variable for the current running stance which does not work
var playerBoard = 1;
    preload() {
        this.load.image('Background', 'assets/Background.jpg');
        this.load.image('4 JUMP_000', 'assets/4 JUMP_000.png');
        let run1 = this.load.image('3 RUN_000', 'assets/3 RUN_000.png');
        let run2 = this.load.image('3 RUN_001', 'assets/3 RUN_001.png');
        let run3 = this.load.image('3 RUN_002', 'assets/3 RUN_002.png');
        let run4 = this.load.image('3 RUN_003', 'assets/3 RUN_003.png');
        let run5 = this.load.image('3 RUN_004', 'assets/3 RUN_004.png');

    }
/*another variable to help return to the first running stance when the sprite stops running*/
let runningStance = run1;
//function that switches the running stances
runningScene(x,y){

if(this.input.keyboard.on("keyDown_D")){
  while(this.input.keyboard.on("keyDown_D")) {
     if (this.playerBoard = 1) {
         this.playerBoard1 = 2;
         this.image = this.add.image(this.image.x, this.image.y, '3 RUN_001');
         runningStance = run2;
         run1.visable = false;
    }
  

Часть кода из программы не включена, так как это заняло бы слишком много места. Что не работает, так это объявление переменной, поскольку оно не позволяет функции if работать должным образом. У меня установлен phaser, на который вы можете ссылаться в коде. Предполагается, что выходные данные скрывают начальное изображение и показывают следующее в последовательности, которое будет run2 .

Комментарии:

1. где runningScene вызывается / передается?

2. runningScene не объявлен, вероятно, кстати, также run1 и run2 нигде не объявлены

Ответ №1:

Попробуйте объявить playerBoard в конструкторе:

 constructor() {
  super({key: "Example1"});
  this.playerBoard = 1;
}
  

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

То же самое для runningStance , пожалуйста, взгляните на приведенную выше ссылку, чтобы проверить, как работают классы

Ответ №2:

Эта строка:

      if (this.playerBoard = 1) {
  

плохо по двум причинам. Во-первых, = что, очевидно, означало быть == или === . Во-вторых, playerBoard это переменная, и здесь вы пытаетесь получить доступ и свойство объекта. Несколькими строками ранее вы объявили var playerBoard = 1; , так что просто прочитайте это

      if (playerBoard === 1) {