2010-04-26 5 views
0

Je travaille sur un jeu javascript et j'ai un système d'automates contrôlant le temps de jeu et l'animation des sprites ainsi que de donner un coup de main au système de recherche de chemin pour le chronométrage et autres. Mon problème est sur les navigateurs lents la boucle javascript que j'utilise pour compter le temps n'est pas très précise. Il a tendance à beaucoup sauter. Y at-il un moyen de forcer la boucle à fonctionner régulièrement à 30 fps?Comment puis-je créer des automates stables en JavaScript?

Fondamentalement, j'ai besoin d'un moyen de garder ma boucle d'automates en cours d'exécution à 1/30ème de seconde.

+0

Voulez-vous dire que vous en avez besoin pour courir tous les 1/30e de seconde, et si elle tombe une trame, il attend 1/15ème de seconde? Ou dites-vous que vous en avez besoin pour avoir une façon précise de déterminer l'heure, quelle que soit la fréquence de fonctionnement? – tloflin

+0

Ya, vous avez l'impression que vous demandez deux choses différentes: si vous avez vraiment besoin d'obtenir une résolution de 30 images par seconde, vous devez vous assurer que tout le traitement de chaque image se fasse en moins de 33 millisecondes. OTOH, si vous avez besoin de vous assurer que le mouvement/l'animation se déroule à un rythme constant, vous pouvez perdre des images lorsque le traitement devient trop lourd - comme le remarque tloflin, vous avez juste besoin d'un moyen fiable pour mesurer le temps écoulé. Qu'avez-vous essayé jusqu'à présent, et comment cela échoue-t-il? – Shog9

+1

Une "boucle javascript pour compter l'heure" semble très inquiétante. S'il vous plaît dites-nous que vous * utilisez * setInterval ici et pas une boucle occupée douteuse, ouais? – bobince

Répondre

0

Il semble que l'utilisation de l'intervalle de set au lieu d'une fonction d'auto-invocation avec setTimeout a été assez longue. Merci bobince

0

Il n'y a aucun moyen pour vous de contrôler le timing (lire here pour plus d'informations), mais sans plus d'informations, je crains de ne pouvoir vous aider davantage.

Questions connexes