У меня проблемы с кодом JavaScript, пытающимся изменить переменную в классе с помощью обработчика события keydown. - PullRequest
0 голосов
/ 27 апреля 2018

Так что в моем обновлении posX должен быть изменен при нажатии клавиши "w", но ничего не происходит. Если я избавляюсь от оператора if и просто изменяю его при каждом вызове функции update, он работает.

class FPlayer {

    constructor(windowWidth, windowHeight, width, height, posX, posY) {

        this.width = width;
        this.height = height;
        this.posX = posX;
        this.posY = posY;
        this.windowWidth = windowWidth;
        this.windowHeight = windowHeight;
        this.x = 0;

        addEventListener("keydown", this.handler);
    }

    update() {

        if(this.x == 87) {

            this.posX += 2;
        }
    }
    draw() {

        c.beginPath();
        c.fillStyle = "blue";
        c.fillRect(this.posX, this.posY, this.width, this.height);
        c.closePath();
    }

    handler(event) {

        this.x = event.keyCode;
    }
}

1 Ответ

0 голосов
/ 27 апреля 2018

Это не сработает:

addEventListener("keydown", this.handler);

Это просто добавляет функцию в качестве обработчика, но не привязывает ее к нужному объекту. Использование:

addEventListener("keydown", this.handler.bind(this));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...