游戏无法清除之前的数据

时间:2018-08-21 21:31:59

标签: javascript html5-canvas

我遇到了一个问题,当一个人玩游戏时没有问题。但是,当他们按下重新启动键时,似乎以前的分数仍然存在,并导致将其发送到后端两次,有时还会将当前分数和先前的分数怪异地加到一个分数中。希望有人能告诉我为什么会这样。

现在为了在画布上开始游戏,我将其设置为

preGame();
  document.addEventListener("keypress", e => {
    if (
      e.key === "r" &&
      document.getElementById("inputName").type === "hidden"
    ) {
      let score = 0;
      const canvasStart = document.getElementById("start");
      if (canvasStart.getContext) {
        const ctxStart = canvasStart.getContext("2d");
        ctxStart.clearRect(0, 0, canvasStart.width, canvasStart.height);
      }
      const canvas = document.getElementById("canvas");
      const canvasEnemy = document.getElementById("enemy");
      const canvasScore = document.getElementById("scoreBoard");
      const canvasGameOver = document.getElementById("gameOver");
      if (canvas.getContext) {
        const ctx = canvas.getContext("2d");
        const ctxEnemy = canvasEnemy.getContext("2d");
        const ctxScore = canvasScore.getContext("2d");
        const ctxGameOver = canvasGameOver.getContext("2d");
        new Game(
          ctx,
          canvas,
          ctxEnemy,
          canvasEnemy,
          ctxScore,
          canvasScore,
          ctxGameOver,
          canvasGameOver,
          score
        ).start();
      }
    }
  });

基本上,它应该在有人按下r键后立即开始。我遇到问题的区域是

  showInput() {
    document.getElementById("inputName").type = "text";
    document.getElementById("inputName").addEventListener("keyup", e => {
      e.preventDefault();
      if (e.keyCode === 13) {
        const scores = firebase.database().ref("scores/");
        let name = document.getElementById("inputName").value;
        let score = this.score;
        let highScore = { name, score };
        scores.push(highScore);
        this.score = 0;

        document.getElementById("inputName").type = "hidden";
        this.showLeaderBoard();
      }
    });
  }

我在此功能中将分数设置为0的原因是要找出以前的分数持续存在的位置。现在它显示0,并且正在创建新分数。我将附上一张图片以显示我的意思。

Console Log showing

Where console log is being done

任何建议将不胜感激。我很好奇,想知道为什么会发生这种情况,当我想通过按r键,它应该开始全新的游戏时。

0 个答案:

没有答案