Existe-t-il une alternative en JavaScript pour obtenir l'heure en millisecondes en utilisant l'objet date, ou au moins un moyen de réutiliser cet objet, sans avoir à instancier un nouvel objet chaque fois que j'ai besoin d'obtenir cette valeur? Je pose cette question parce que j'essaie de créer un moteur de jeu simple en JavaScript, et lors du calcul du "delta frame time", je dois créer un nouvel objet Date à chaque image. Bien que je ne sois pas trop préoccupé par les implications en termes de performances, j'ai quelques problèmes avec la fiabilité de l'heure exacte renvoyée par cet objet.
J'obtiens un étrange "saut" dans l'animation, toutes les secondes environ, et je ne suis pas sûr si cela est lié à la récupération de place de JavaScript ou à une limitation de l'objet Date lors de la mise à jour si rapide. Si je règle la valeur delta sur une constante, alors l'animation est parfaitement fluide, donc je suis assez sûr que ce "saut" est lié à la façon dont j'obtiens l'heure.
Le seul code pertinent que je puisse donner est la façon dont je calcule le temps delta:
prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;
Lors du calcul de mouvement / animation, je multiplie une valeur constante par le temps delta.
S'il n'y a aucun moyen d'éviter d'obtenir l'heure en millisecondes en utilisant l'objet Date, une fonction qui incrémente une variable (étant le temps écoulé en millisecondes depuis le début du jeu), et qui est appelée à l'aide de la fonction SetTimer à un taux de une fois toutes les millisecondes une alternative efficace et fiable?
Edit: J'ai testé maintenant mon code dans différents navigateurs et il semble que ce "saut" n'apparaisse vraiment que dans Chrome, pas dans Firefox. Mais ce serait toujours bien s'il y avait une méthode qui fonctionne dans les deux navigateurs.
Date.getMillisecondsne renvoie que les millisecondes dans la seconde actuelle, c'est-à-dire de 0 à 999? Vous n'utilisez pas cette fonction dans votre exemple, mais peut-être qu'elle est utilisée ailleurs, ou sur une autre branche?