Return to article
Keeping a Constant Frame Rate: Example2Applet
This applet is very similar to
the previous example,
except that it keeps better track of time in
the run() method.
The actual code for this applet is in
Example2Applet.java.
This is the updated method:
/**
* This method is called by the thread that was created in
* the start method. It does the main animation.
*/
public void run() {
// Remember the starting time
long tm = System.currentTimeMillis();
while (Thread.currentThread() == animator) {
// Display the next frame of animation.
repaint();
// Delay depending on how far we are behind.
try {
tm += delay;
Thread.sleep(Math.max(0, tm - System.currentTimeMillis()));
} catch (InterruptedException e) {
break;
}
// Advance the frame
frame++;
}
}