2010-03-19 8 views
2

J'ai fait un petit jeu de tir avec deux navires qui tiraient l'un sur l'autre. J'ai utilisé des méthodes de paintComponent pour dessiner ou déplacer un objet, mais pour une raison quelconque, il a fonctionné à une vitesse différente sur chaque ordinateur.Java3D problème de temps

J'ai cherché une solution et apporté quelques modifications à mon jeu comme dessiner et déplacer des objets dans le fil. Maintenant, il fonctionne à la même vitesse sur tous les ordinateurs. Aussi, si je change de taille. Mais le problème est que j'ai utilisé J3DTimer.getValue().

Pour utiliser cette bibliothèque, j'ai téléchargé Java3d. Si l'ordinateur n'a pas cette bibliothèque ou installation, mon jeu ne fonctionne pas. Comment puis-je résoudre ce problème? Dois-je dire à tout le monde d'installer Java ##? :))

J'ai aussi essayé d'utiliser System.currentTimeMillis(), mais mon jeu fonctionne très lentement ... Des idées?

Répondre

2

Depuis Java 1.5, il existe une méthode appelée System.nanoTime(), généralement beaucoup plus précise que System.currentTimeMillis() (en fonction des capacités du matériel sous-jacent).

Je pense que System.nanoTime() devrait être un remplaçant pour J3DTimer.getValue(). De cette façon, vous supprimez votre dépendance à la bibliothèque Java3D.

+0

J'ai utilisé à la place de la minuterie J3D mais avec la même configuration de mon thread J3D sommeil fonctionnait sans heurt mais maintenant à l'écran mes chaînes ont un peu flick.Am je ne reçois pas la même valeur de J3DTimer.getValue() et System.nanoTime ()? S'il y a des différences, qu'est-ce que c'est? Je peux modifier la méthode Thread.sleep avec cette valeur – Ercan

+0

Je viens de télécharger le code source Java3D de https://java3d.dev.java.net et j'ai regardé 'J3DTimer.getValue()'. La méthode est de toute façon un wrapper pour 'System.nanoTime()' de toute façon (au moins dans la version 1.5.2 de Java3D). Je ne suis pas sûr de savoir comment changer entre les deux pourrait modifier la façon dont votre application se comporte. – Ash

Questions connexes