javascript - 如何仅在淡入倒计时计数器后调用游戏开始方法?

标签 javascript jquery countdown countdowntimer jquery-countdown

功能:

游戏开始前,会有一个通知期,通知用户游戏将在 xSecs 后开始。在此通知期间,用户将无法使用任何功能:

  1. 倒计时计数器不会启动
  2. 当用户尝试单击游戏“Tap Me”图像按钮时,将无法单击该按钮

因此,在通知期过后,计数器将开始倒计时序列,同时用户将点击“Tap Me”图像按钮将图像从页面顶部移动到页面底部。

我做了什么:

我已经创建了通知计时器以及倒计时计数器和游戏点击。因此,此时,倒计时器只有在通知计时器完成后才开始计时。

问题:

即使在通知期间,用户仍然可以使用“点按我”图像按钮将图像向下移动到页面上。因此,我需要确保用户在通知倒计时期间无法使用“Tap Me”图像按钮,而只能在通知倒计时之后使用。

那么,如何设置“Tap Me”方法只能在通知倒计时后使用?

var count = 5,
  interval, CounterInterval, x;
//Method to enable star to decrease when 'tap' button is tapped
var step = 20,
  counter = 0,
  timer = 20;
//To set bottom limit variable
var bottomStarLimit = 2308;

function GameStartTimer() {
    if (count > 0) {
      $("#CountdownFadeInTimer").fadeOut('slow', function() {
        $("#CountdownFadeInTimer").text(count);
        $("#CountdownFadeInTimer").fadeIn();
        count--;
      });
    } else if (count == 0) {
      $("#CountdownFadeInTimer").fadeOut('slow', function() {
        $("#CountdownFadeInTimer").text("Start!!");
        $("#CountdownFadeInTimer").fadeIn();
        count--;
        //method call to Game function & Timer    
        initiateGameTimer();
        GameStart();
      });
    } else {
      //fade out countdown text
      $("#CountdownFadeInTimer").fadeOut();
      clearInterval(interval);
    }
  }
  //Trigger to set GameStartTimer function: fade in notification counter
interval = setInterval(function() {
  GameStartTimer()
}, 2000);

//Tap the star down function
function GameStart() {
  console.log("GameStart");
  x = document.getElementById('GameStar').offsetTop;
  console.log("x:" + x);
  //check condition if star reach bottom page limit, else continue to move down
  if (x < bottomStarLimit)
    x = x + step;
  document.getElementById('GameStar').style.top = x + "px";
}

function initiateGameTimer() {
  CounterInterval = setInterval(function() {
    counter = counter + 1;
    timer = timer - 1;
    $('#GameTime').html(timer);
    console.log(timer);
    // Gamce condition check when timer =0: position of the star < or > 2308(bottom page limit)
    if (timer == 0) {
      clearInterval(CounterInterval);
      if (x >= 2308) {
        $("#GamePage").hide();
        $("#Congratulations").show();
      } else if (x < 2308) {
        console.log("fail");
        $("#GamePage").hide();
        $("#GameOver").show();
      }
    }
  }, 1000)
}
<div id="GamePage" style="width:100%; height:100%;z-index=1;">

  <div id="CountdownFadeInTimer"></div>

  <p id="GameTime">20</p>
  <img id="GameStar" type="image" src="lib/Elements/The%20Star.png">
  <button id="Tap" type="image" src="lib/Elements/Tap%20here%20button.png" onclick="GameStart()" />

</div>

最佳答案

将按钮的disabled属性设置为disabled。然后,当通知倒计时结束时,使用以下 JavaScript 删除该属性:

document.getElementById("Tap").removeAttribute("disabled"); 

关于javascript - 如何仅在淡入倒计时计数器后调用游戏开始方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34070431/

相关文章:

javascript - 如何使用 Ctrl+Z 事件将文本替换为星号?

PHP JavaScript 倒数计时器

c# - WPF 计时器倒计时

Javascript 倒数计时器

javascript - 如何使用 CSS 仅设置 div 中的背景图像而不设置 div 标签之间的内容样式?

javascript - 隐藏 Adob​​e 表单中的文本字段并删除空格以向上移动下一个文本

javascript - 从主窗口访问 iframe 内部属性

javascript - 未捕获的类型错误 : Cannot read property 'root' of undefined

jquery - 列宽容器未扩展到所有列

jquery - 在 `onClick` 上切换 DIV 高度