Ik ben een spelletje aan het schrijven waarin ik uiteraard geen irritant geflikker en geschok wil. In dit artikel op Gamasutra wordt uitgelegd hoe je dit kunt doen dmv. thread synchronisatie. (Je moet je wel registreren om het te kunnen lezen)
Het is de bedoeling dat de 'event dispatcher' (AWT achtergrond thread) en mijn eigen 'GameLoop' thread gesynchroniseerd worden zodat de GameLoop niet repaint() aan roept terwijl de event dispatcher nog bezig is de vorige repaint() te verwerken.
run() method van de gameloop thread:
paint() method:
Helaas werkt het niet. Mijn programma wordt hierdoor juist extra langzaam
Mijn vraag is: Wie weet iets van synchronisatie en weet hoe je dit op moet lossen?
Het is de bedoeling dat de 'event dispatcher' (AWT achtergrond thread) en mijn eigen 'GameLoop' thread gesynchroniseerd worden zodat de GameLoop niet repaint() aan roept terwijl de event dispatcher nog bezig is de vorige repaint() te verwerken.
run() method van de gameloop thread:
Java:
1
2
3
4
5
6
7
8
9
| synchronized public void run() { //main game loop while(true) { repaint(); wait(); } } |
paint() method:
Java:
1
2
3
4
5
6
| synchronized public void paint(Graphics g) { //doe hier wat tekenwerk g.fillOval(x, y, 5, 5); notifyAll(); } |
Helaas werkt het niet. Mijn programma wordt hierdoor juist extra langzaam
Mijn vraag is: Wie weet iets van synchronisatie en weet hoe je dit op moet lossen?