현재 부분적으로 작동하는 솔루션이 있지만 나에게 올바른 반복을 알 수는 없습니다. 나는 또한 이것을 완전히 잘못 할 수도있다. PHP에서 처음에는 현재 시간을 가져 와서 마이크로 초로 변환합니다. 차이가 가장 가까운 반 시간에 주어진 있도록 계산 것 : 나는 EaselJS으로, 자바 스크립트에 쓰고 시스템에 JSON 파일에 넣고 전송JS/PHP의 Microtime에서 서버 시간에서 가장 가까운 30 시간까지 어떻게 카운트 다운합니까?
$remaining = 30 - (date('i', time()) % 30);
. (편집 : 나는 그것이 바로 전송되기 전에 MicroTime로 변환됩니다 언급하는 것을 잊었다) :
function UpdateGame(event)
{
if (ready == true)
{
stage.update();
if (TickTimerReady == true)
{
ticktimer = ticktimer - 1000000;
console.log(ticktimer);
}
}
}
을 지금 여기에 파일을, 부울이 "사실"에 이성을 상실하고는 카운트 다운이 시작로드되면
까다로운 부분 : UpdateGame은 40FPS에서 실행되는 틱 기반 이벤트입니다. 서버가 실행하는 것과 동시에 30 분에 도달하도록 틱 티머에서 빼기 위해 적절한 값을 계산하려면 어떻게해야합니까? 나는 그것이 약간 벗어날지도 모른다는 것을 이해한다 ... 그러나 1000000은 분명히 아니다!
서버와 클라이언트 사이의 오프셋을 계산하고 클라이언트에서 모든 계산을 수행하는 것이 더 간단합니다. (new Date (document.lastModified) - performance.timing.domainLookupEnd와 같은) 오프셋을 계산해야합니다. – dandavis
performance.timing을 인식하지 못합니다. 어떻게 사용할 수 있습니까? – Merlin
새 날짜 (performance.timing.responseEnd)는 서버가 날짜를 반환하는 순간과 매우 비슷하지만 클라이언트의 시계에 따라 다릅니다. 클라이언트 시간에서 서버 시간을 빼면 오프셋에 도달합니다. 클라이언트는 서버 시간으로 변환하기 위해 날짜와 함께 오프셋을 더하거나 뺄 필요가 있습니다. performance.timing 값은 지연 보상을 필요로하지 않기 때문에 좋기 때문에 15-25ms 내에 안정적으로 동기화 할 수 있습니다. OS는 예고없이 시계를 조정할 수 있으므로 주기적으로 오프셋을 다시 계산하는 것이 좋습니다. – dandavis