Javascript: подождите несколько кадров, прежде чем продолжить функцию
Я разрабатываю игру, и у меня возникли некоторые проблемы. Я хотел бы провести время wait(frames)
это заставило бы функцию ждать несколько кадров, прежде чем продолжить.
У меня есть основной цикл, как это:
setInterval(function() {
refreshMap();
}, 35 );
И такая функция:
function sayHello(){
console.log("hello 1");
wait(5);
console.log("hello 2");
}
wait(5)
функция заставит игру обновиться 5 раз перед выполнением console.log("hello 2");
, Можно ли обойтись без заморозки всей игры как setTimeout()
?
1 ответ
Я не вижу, как взаимодействуют ваша первая и вторая функции. Но что-то вроде этого заставило бы игру ждать 10 секунд без остановки игры:
setInterval(refreshMap,35);
sayHello();
function sayHello(timeToContinue)
{
if (!timeToContinue) //the first time it's called
{
console.log("hello 1");
var nextTime = new Date();
nextTime.setSeconds(nextTime.getSeconds() + 10);
window.setTimeout(function(){sayHello(nextTime);}), 1); //call this function again
return;
}
if (new Date() < timeToContinue) //when next the function gets here check 10 seconds have passed
{
window.setTimeout(function(){sayHello(timeToContinue);}), 1); //else come back later
return;
}
console.log("hello 2");
}