From 371aa85b4ca34d5a30b138c5c0bd32a8504bab09 Mon Sep 17 00:00:00 2001 From: starnakin Date: Thu, 18 Jan 2024 13:29:26 +0100 Subject: [PATCH] game: fix: leave page do not cause error --- frontend/static/js/views/GameView.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/frontend/static/js/views/GameView.js b/frontend/static/js/views/GameView.js index 3763b5c..59e273a 100644 --- a/frontend/static/js/views/GameView.js +++ b/frontend/static/js/views/GameView.js @@ -30,7 +30,12 @@ export default class extends AbstractView draw() { - let ctx = document.getElementById('canva').getContext('2d'); + const canva = document.getElementById('canva'); + + if (canva === null) + return 1; + + let ctx = canva.getContext('2d'); ctx.beginPath(); @@ -44,11 +49,12 @@ export default class extends AbstractView render_game() { let loop_id = setInterval(() => { + if (this.game === undefined) + clearInterval(loop_id); if (this.my_player) this.my_player.update_paddle(this.keys_pressed); this.draw(); - this.game.time.new_frame(); - //clearInterval(loop_id); + this.game?.time.new_frame(); // 1 sec fps }, 1000 / 60); } @@ -118,6 +124,11 @@ export default class extends AbstractView async leavePage() { + if (this.game.started === true && this.game.finished === false) + { + this.game.leave(); + this.game = undefined; + } this.unregister_key(); }