Hi Leute
Ich arbeite gerade an einem Spiel, aber habe noch Probleme mit der sleepTime in der Game Loop.
Hier ist erstmal mein Code:
Das Problem ist jetzt, dass der Thread nie schläft, weil die SleepTime IMMER < 0 ist. Der Code stammt aus einem Tutorial, wo er auch funktioniert hat. Ich verstehe das Problem einfach nicht.
Kann mir einer sagen wo der Fehler liegt oder eine bessere Variante zur sicheren Zeiteinteilung sagen?
Ich arbeite gerade an einem Spiel, aber habe noch Probleme mit der sleepTime in der Game Loop.
Hier ist erstmal mein Code:
Java:
public void run() {
long beforeTime, afterTime, diff, sleepTime, overSleepTime = 0;
int delays = 0;
while (running) {
beforeTime = System.nanoTime();
update();
render();
afterTime = System.nanoTime();
diff = afterTime - beforeTime;
sleepTime = (period - diff) - overSleepTime;
fps++;
if(System.currentTimeMillis()-1000 >= lastFPSTime){
lastFPSTime = System.currentTimeMillis();
fpsb = fps;
fps = 0;
}
if (sleepTime < period && sleepTime > 0) { // period ist die angestrebte Zeit
// in diesem Fall 6 * 1000000
try {
game.sleep(sleepTime / 1000000L);
overSleepTime = 0;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
if (diff > period) {
overSleepTime = diff - period;
} else {
if (++delays >= DELAYS_BEFORE_YIELD) {
game.yield();
delays = 0;
overSleepTime = 0;
} else {
overSleepTime = 0;
}
}
}
}// while
}
Das Problem ist jetzt, dass der Thread nie schläft, weil die SleepTime IMMER < 0 ist. Der Code stammt aus einem Tutorial, wo er auch funktioniert hat. Ich verstehe das Problem einfach nicht.
Kann mir einer sagen wo der Fehler liegt oder eine bessere Variante zur sicheren Zeiteinteilung sagen?
Zuletzt bearbeitet: