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");
}
Другие вопросы по тегам