Methods Summary |
---|
public void | animate()This method moves (and bounces) the circle and then requests a redraw.
The animator thread calls this method periodically.
// Bounce if we've hit an edge.
Rectangle bounds = getBounds();
if ((x - r + dx < 0) || (x + r + dx > bounds.width)) dx = -dx;
if ((y - r + dy < 0) || (y + r + dy > bounds.height)) dy = -dy;
// Move the circle.
x += dx; y += dy;
// Ask the browser to call our paint() method to draw the circle
// at its new position.
repaint();
|
public void | paint(java.awt.Graphics g)This method simply draws the circle at its current position // A flag to ask the thread to stop
g.setColor(Color.red);
g.fillOval(x-r, y-r, r*2, r*2);
|
public void | run()This method is from the Runnable interface. It is the body of the
thread that performs the animation. The thread itself is created
and started in the start() method.
while(!pleaseStop) { // Loop until we're asked to stop
animate(); // Update and request redraw
try { Thread.sleep(100); } // Wait 100 milliseconds
catch(InterruptedException e) {} // Ignore interruptions
}
|
public void | start()Start animating when the browser starts the applet
animator = new Thread(this); // Create a thread
pleaseStop = false; // Don't ask it to stop now
animator.start(); // Start the thread.
// The thread that called start now returns to its caller.
// Meanwhile, the new animator thread has called the run() method
|
public void | stop()Stop animating when the browser stops the applet
// Set the flag that causes the run() method to end
pleaseStop = true;
|