Это странно? Я не могу заставить requestAnimationFrame работать вместе с keyl / down для EventListeners, когда он находится в классе машинописи - но он работает нормально, если я вне класса?
Помогите мне решить эту проблему или просто скажите, почему он никогда не будет работать внутри класса ...
class GameEngine
{
private aKey:boolean
private canvas:HTMLCanvasElement;
private ctx:CanvasRenderingContext2D;
constructor()
{
this.canvas = <HTMLCanvasElement> document.getElementById("canvas");
this.ctx = this.canvas.getContext("2d");
document.addEventListener('keyup', this.keyUp, false);
document.addEventListener('keydown', this.keyDown, false);
this.loop();
}
private keyDown(event:KeyboardEvent): void
{
if (event.repeat) {return};
console.log("KeyDown");
console.log(this.aKey);
if (event.key == 'a')
{
this.aKey = true;
console.log(this.aKey);
}
}
private keyUp(event: KeyboardEvent): void
{
if (event.key == 'a')
{
this.aKey = false;
}
}
private loop()
{
console.log(this.aKey);
if (this.aKey == true) this.ctx.fillRect(10,10,10,10);
window.requestAnimationFrame(this.loop.bind(this));
}
}
new GameEngine();
когда я нажимаю клавишу 'a', в консоли записывается значение true / false, как и ожидалось
но цикл продолжает печатать «неопределенный»?