Bonjour,
Voici mon problème :
J'ai créé un programme qui affiche une animation.
(une simulation de l'interaction gravitationnelle entre plusieurs astres. On voit les astres se déplacer en laissant une trainée derrière pour ainsi voir la trajectoire).
J'ai donc créé une classe qui implémente l'interface runnable et je lance un thread associé à un objet de cette classe. J'ai deux possibilités pour ma méthode run.
Si ma méthode run est:
Alors l'animation s'effectue mais c'est l'animation n'est pas fluide. On voit les objets se déplacer, puis sa s'arrête une seconde, puis ça repart. Et ainsi de suite. Pourquoi est-ce saccadé ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void run() { while(true){ g = (Graphics2D)sys.panSys.getGraphics(); sys.panSys.repaint(); } }
Si j'implémente run de la manière suivante :
Là ça marche bien. Mais d'une part je lis de partout que l'on ne doit pas appelé paint directement, de plus quelquefois ça plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public void run() { Graphics2D g; while(true){ g = (Graphics2D)sys.panSys.getGraphics(); sys.panSys.paint(g); } }
Alors laquelle des deux choisir et comment corriger les problèmes dans les deux cas.
Merci de m'éclairer.
Partager