Bonjour je ne suis pas du tout un expert java, donc je soupçonne une énorme c.... de ma part , mais il m'arrive un phénomène assez bizarre, avec Java2D j'explique:
j'ai un petit jeu tout simple: avec gameLoop() comme boucle principale, qui efface l'écran, appelle une méthode updateGame() qui met à jour les variables et prépare l'affichage des sprites, puis gameLoop affiche le tout, ca donne quelque chose comme ça:
Code :
- public void gameLoop()
- {
- while(gameRunning)
- {
- // on efface tout
- g = (Graphics2D) strategy.getDrawGraphics();
- g.setColor(Color.black);
- g.fillRect(0,0,800,600);
- // met a jour les variables du jeu
- updateGame();
- // affiche le tout
- g.dispose();
- strategy.show();
- }
- }
|
et à ma grande surprise si je ne ralentit pas l'execution de gameLoop() des bugs apparaissent dans mon jeu, et la méthode updateGame() semble être appellée plusieurs fois en même temps à certains moment (d'après les traces que j'ai obtenues).
Si je ralenti la méthode gameLoop() avec un Thread.sleep() par exemple ou mieux une grosse boucle for() à la fin de ma boucle while() tout marche parfaitement .
Voila mon programme n'est pas découpé en thread ou autre donc je ne comprend pas...tout devrais s'executer à la suite non ?
j'ai vu quelque part sur le net que la JVM 1.5 pourrait être buggé au niveau du BufferStrategy, donc la question finale :
Est-ce que quelqu'un sait quelque chose ? ou éventuellement peut me dire qu'est-ce que j'ai mal fait ?