[BUG} Trying fix pressing buttons out of focus

This commit is contained in:
Nikita Iryupin 2021-05-03 14:33:06 +02:00
parent b4f1e7c083
commit e90a424e54
2 changed files with 11 additions and 6 deletions

View File

@ -1,15 +1,15 @@
import { GameKeyAdapterInterface } from "./gameKeyAdapterInterface"; import { GameKeyAdapterInterface } from "./gameKeyAdapterInterface";
import {DirectionEnum} from "../Tanks/directionEnum"; import { DirectionEnum } from "../Tanks/directionEnum";
export class TankKeyAdapter extends GameKeyAdapterInterface{ export class TankKeyAdapter extends GameKeyAdapterInterface {
constructor(tank){ constructor(tank) {
super(); super();
this.tank = tank; this.tank = tank;
} }
handleEvent(event){ handleEvent(event) {
switch(event.key){ switch (event.key) {
case "ArrowLeft": case "ArrowLeft":
this.tank.move(DirectionEnum.Left); this.tank.move(DirectionEnum.Left);
break; break;

View File

@ -1,4 +1,4 @@
import { GameField } from "./Graphics/gameField"; import { GameField } from "./GameLogic/gameField";
import { TankKeyAdapter } from "./KeyAdapters/tankKeyAdapter"; import { TankKeyAdapter } from "./KeyAdapters/tankKeyAdapter";
export function init() { export function init() {
@ -20,6 +20,11 @@ export class Game {
let prevEv; let prevEv;
let holding = (ev) => { let holding = (ev) => {
if (!prevEv || prevEv.key != ev.key) return; if (!prevEv || prevEv.key != ev.key) return;
if (document.visibilityState == "hidden") {
alert("I'm hidden");
prevEv = undefined;
return;
}
this.gameKeyAdapter.handleEvent(ev) this.gameKeyAdapter.handleEvent(ev)
requestAnimationFrame(() => holding(ev)); requestAnimationFrame(() => holding(ev));
} }