предел времени запроса requestAnimationFrame - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь написать основную c игру l oop на основе requestAnimationFrame . Обратный вызов для requestAnimationFrame передается с аргументом timestamp, который, как я понимаю, представляет собой время в миллисекундах с момента загрузки страницы. При построении игры l oop у меня есть предположение, что при каждом вызове requestAnimationFrame значение метки времени всегда увеличивается, основываясь на том, что я могу вычислить дельту времени между кадрами. Мое единственное беспокойство заключается в том, что если приложение работает в течение длительного времени, это значение временной отметки достигнет своего предела в какой-то момент.

Существует ли такой предел? Сколько времени в реальном мире должно пройти, чтобы это произошло? Что произойдет со значением метки времени после достижения лимита?

Ответы [ 2 ]

0 голосов
/ 22 марта 2020

Не волнуйтесь.

То, что передается обратному вызову requestAnimationFrame, представляет собой DOMHighResTimestamp, в действительности его источником является загрузка страницы в окне () - время первого создания контекста просмотра ") и действительно оно представляет количество миллисекунд с тех пор.

Согласно спецификациям , у вас есть примерно 285 616 лет , прежде чем он начнет терять точность.

0 голосов
/ 18 марта 2020

Я не думаю, что он возвращает миллисекунды с момента загрузки страницы, он возвращает DOMHighResTimeStamp "когда requestAnimationFrame() начинает выполнять функции обратного вызова".

от MDN

Функция для вызова, когда пришло время обновить анимацию для следующего перерисовки. В функцию обратного вызова передается один единственный аргумент, DOMHighResTimeStamp аналогичный тому, который возвращается performance.now(), указывающий момент времени, когда requestAnimationFrame() начинает выполнять функции обратного вызова.

, который просит вопрос, поэтому я также скажу, что я не буду беспокоиться о переполнении в этом случае, поскольку этот блок равен double, и я уверен, что это означает 64-битную точность. Потребовалось 60 лет, чтобы решить задачу 2038 года , которая имела 32 бита точности. Моя математика, вероятно, выключена, но я бы не стал беспокоиться о переполнении. Когда временные метки начинают разрушаться, у нас, вероятно, возникают большие проблемы.

...