Я изменяю игру в формате Javascript, и вам нужно добавить таймер обратного отсчета (от 3:00 до 0 секунд) в верхней части игрового поля. У меня есть как игра, так и таймер, таймер начнется, когда пользователь нажмет кнопку «Старт» для игры. (т. е. время игры заканчивается через 3 минуты)Javascript игра с таймером
Моя проблема в том, что, поскольку 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()
способом из мой таймер? Каждый раз, когда я пытаюсь запустить оба метода при нажатии «start», JavaScript не запускается вообще. Ничего не работает, и он зависает, я предполагаю, что два метода пытаются запустить сразу?
Нет, это не так. Таймеры все еще работают независимо. –
Как мы можем помочь без вашего кода? Вы используете цикл for для обратного отсчета вместо setTimeout? –
«Игра в игру» - это не синхронное, зависящее от браузера 3-минутное выполнение сценария, не так ли? Таймер будет иметь возможность запускать во время цикла события. – Bergi