이 값을 얻을 때마다 새 객체를 인스턴스화하지 않고 날짜 객체를 사용하여 밀리 초 단위로 시간을 얻는 방법 또는 적어도 해당 객체를 재사용하는 방법이 JavaScript에 대안이 있습니까? JavaScript로 간단한 게임 엔진을 만들려고하기 때문에 이것을 묻고 있습니다. "델타 프레임 시간"을 계산할 때 매 프레임마다 새로운 Date 객체를 만들어야합니다. 성능의 영향에 대해 너무 걱정하지는 않지만이 객체가 반환 한 정확한 시간의 신뢰성에 문제가 있습니다.
나는 매초마다 애니메이션에서 이상한 "점프"를 얻었으며 이것이 너무 빨리 업데이트 할 때 JavaScript의 가비지 콜렉션 또는 Date 객체의 제한과 관련이 있는지 확실하지 않습니다. 델타 값을 일정한 값으로 설정하면 애니메이션이 완벽하게 매끄러 워 지므로이 "점프"가 시간을 얻는 방식과 관련이 있다고 확신합니다.
내가 줄 수있는 유일한 관련 코드는 델타 시간을 계산하는 방법입니다.
prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;
움직임 / 애니메이션을 계산할 때 상수 값에 델타 시간을 곱합니다.
Date 객체를 사용하여 밀리 초 단위로 시간을 얻는 것을 피할 방법이 없으면 변수를 증가시키는 함수 (게임이 시작된 후 경과 된 시간 (밀리 초))와 SetTimer 함수를 사용하여 호출하는 함수 밀리 초마다 한 번 효율적이고 안정적인 대안이 되겠습니까?
편집 : 이제 다른 브라우저에서 내 코드를 테스트 했으며이 "점프"는 Firefox가 아닌 Chrome에서만 나타납니다. 그러나 두 브라우저에서 모두 작동하는 방법이 있다면 여전히 좋을 것입니다.
Date.getMilliseconds현재 초 (밀리 초) 즉 0에서 999까지만 반환 한다는 사실과 관련이있을 수 있습니까? 귀하의 예제 에서이 기능을 사용하지 않지만 다른 곳이나 다른 지점에서 사용되고 있습니까?