如何在淡入倒数计数器后才调用游戏开始方法?
How to call game start method only after fade-in countdown counter?
功能:
游戏开始前,会有一个通知期通知用户游戏将在xSecs开始。在此通知期间,用户将无法使用任何功能:
- 倒数计数器将不会启动
- 游戏 "Tap Me" 当用户尝试单击按钮时将无法单击图像按钮
因此,在通知期过后,计数器将开始倒计时序列,同时用户将点击 "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");
功能:
游戏开始前,会有一个通知期通知用户游戏将在xSecs开始。在此通知期间,用户将无法使用任何功能:
- 倒数计数器将不会启动
- 游戏 "Tap Me" 当用户尝试单击按钮时将无法单击图像按钮
因此,在通知期过后,计数器将开始倒计时序列,同时用户将点击 "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");