Animation MIDlet 2
/* J2ME in a Nutshell By Kim Topley ISBN: 0-596-00253-X */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class AnimationMIDlet2 extends AnimationMIDlet { // Create an AnimationCanvas2 protected AnimationMIDlet.AnimationCanvas createAnimationCanvas() { return new AnimationCanvas2(); } class AnimationCanvas2 extends AnimationMIDlet.AnimationCanvas { // Override superclass paint method to take // into account the clipping rectangle protected void paint(Graphics g) { // Get the clipping rectange int clipX = g.getClipX(); int clipY = g.getClipY(); int clipWidth = g.getClipWidth(); int clipHeight = g.getClipHeight(); // Paint with the background color - only // the area within the clipping rectangle g.setColor(background); g.fillRect(clipX, clipY, clipWidth, clipHeight); // Draw all of the blocks g.setColor(foreground); synchronized (this) { for (int i = 0, count = blocks.length; i < count; i++) { g.fillRect(blocks[i].x, blocks[i].y, SIZE, SIZE); } } } // Called on expiry of timer. public synchronized void moveAllBlocks() { // Update the positions and speeds // of all of the blocks and repaint // only the part of the screen that // they occupy for (int i = 0, count = blocks.length; i < count; i++) { // Request a repaint of the current location Block block = blocks[i]; repaint(block.x, block.y, SIZE, SIZE); blocks[i].move(); // Request a repaint of the new location repaint(block.x, block.y, SIZE, SIZE); } } } }