У меня есть объявленная переменная, которую код не распознает. Почему это? - PullRequest
1 голос
/ 09 апреля 2019

Я программирую игру, и это ее часть.Я хочу, чтобы программа перебирала различные картинки запущенного спрайта.Я сделал переменную, чтобы программа знала, какая картинка отображается на экране бегущего персонажа.Программа не распознает объявленную переменную.Я просто делаю простую ошибку с 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, на который вы можете ссылаться в коде.Предполагается, что выходные данные скрывают начальное изображение и показывают следующее в последовательности, которая будет выполняться 2.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Эта строка:

     if (this.playerBoard = 1) {

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

     if (playerBoard === 1) {
0 голосов
/ 09 апреля 2019

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

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

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

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

...