В настоящее время у меня есть частичное решение, но я не могу найти правильную итерацию. Я также мог бы сделать это совершенно неправильно. Сначала в PHP я получаю текущее время и конвертирую его в микросекунды. Он рассчитывается так, что разница указывается с точностью до получаса:
$remaining = 30 - (date('i', time()) % 30);
Это помещается в файл JSON и отправляется в систему, которую я пишу в Javascript, с помощью EaselJS.
(РЕДАКТИРОВАТЬ: я забыл упомянуть, что он конвертируется в MicroTime перед отправкой)
Как только файл загружен, bool переключается на «true» и начинает обратный отсчет:
function UpdateGame(event)
{
if (ready == true)
{
stage.update();
if (TickTimerReady == true)
{
ticktimer = ticktimer - 1000000;
console.log(ticktimer);
}
}
}
Теперь вот сложная часть: UpdateGame — это тиковое событие, работающее со скоростью 40 FPS. Как я могу рассчитать правильные значения для вычитания из тиктимера, чтобы он достиг получаса в то же время, что и сервер? Я понимаю, что это может быть немного не так … но 1000000 явно не так!
Вы могли бы сделать что-то вроде следующего, где вы могли бы позвонить timer()
когда сервер отвечает, и просто делайте все, что вам нужно сделать, как только прошло 30 минут.
var seconds = 0;
timer = function(){ setInterval(count,1000); }
count = function(){
seconds++;
if (seconds === (30*60)) window.alert("it's been 30 minutes do stuff");
}
Других решений пока нет …