我在修改Javascript游戏,并需要在游戏板顶部添加倒数计时器(从3:00分钟到0秒)。我将游戏和计时器都写入了,当用户点击游戏的“开始”按钮时,计时器就会启动。 (即游戏时间到3分钟后结束)Javascript game with timer
我的问题是,由于JavaScript不是多线程的,我的游戏倒数计时器将不允许在用户同时玩我的游戏时运行(打勾) 。那是对的吗?
在我看来,除了使用新的多线程JavaScript库之外,还有一些方法可以使其发挥作用。
这里是我的计时器:
<script type="text/javascript">
// set minutes
var mins = 3;
// calculate the seconds (don't change this! unless time progresses at a different speed for you...)
var secs = mins * 60;
function countdown() {
setTimeout('Decrement()',1000);
}
function Decrement() {
if (document.getElementById) {
minutes = document.getElementById("minutes");
seconds = document.getElementById("seconds");
// if less than a minute remaining
if (seconds < 59) {
seconds.value = secs;
} else {
minutes.value = getminutes();
seconds.value = getseconds();
}
secs--;
setTimeout('Decrement()',1000);
}
}
function getminutes() {
// minutes is seconds divided by 60, rounded down
mins = Math.floor(secs/60);
return mins;
}
function getseconds() {
// take mins remaining (as seconds) away from total seconds remaining
return secs-Math.round(mins *60);
}
</script>
<script>
countdown();
</script>
<div id="timer">
<input id="minutes" value="3" type="text" style="width: 14px; border: none; background-color:none; font-size: 16px; font-weight: bold;">:<input id="seconds" value="00" type="text" style="width: 26px; border: none; background-color:none; font-size: 16px; font-weight: bold;"> remaining
</div>
下面是踢一切都关掉我的游戏的一部分:
<script>
$(function(){
$("#button-start").click(game.start);
});
</script>
我怎么有game.start
方法运行以及从countdown()
方法我的计时器?每次我尝试在单击“开始”时运行这两种方法时,JavaScript都根本不运行。没有任何工作,它冻结了,我假设从两个方法试图立即运行?
不,这是不正确的。定时器仍然运行。 – 2013-02-28 21:16:59
我们如何在没有您的代码的情况下提供帮助?你是否使用for循环代替setTimeout进行倒计时? – 2013-02-28 21:17:02
“玩游戏”不是一个同步的,浏览器冻结的3分钟持续脚本执行,是吗?计时器将有机会在事件循环期间触发。 – Bergi 2013-02-28 21:26:28