WEB开发网
开发学院软件开发Java 使用Timer制作动画效果 阅读

使用Timer制作动画效果

 2007-12-23 12:40:50 来源:WEB开发网   
核心提示:import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.util.*;public class TimerDemo extends MIDlet {Displaydisplay;StarFieldfield = n

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;

public class TimerDemo extends MIDlet {

 Display  display;
 StarField field = new StarField();
 FieldMover mover = new FieldMover();
 Timer   timer = new Timer();

 public TimerDemo() {
  display = Display.getDisplay( this );
 }

 PRotected void destroyApp( boolean unconditional ) { }

 protected void startApp() {
  display.setCurrent( field );
  timer.schedule( mover, 100, 100 );
 }

 protected void pauseApp() { }

 public void exit(){
  timer.cancel(); // stop scrolling
  destroyApp( true );
  notifyDestroyed();
 }

class FieldMover extends TimerTask {
 public void run(){
  field.scroll();
 }
}

class StarField extends Canvas {
 int    height;
 int    width;
 int[]   stars;
 Random   generator = new Random();
 boolean  painting = false;

 public StarField(){
  height   = getHeight();
  width    = getWidth();
  stars    = new int[ height ];

  forint i = 0; i < height; ++i ){
   stars[i] = -1;
  }
 }

 public void scroll() {
  if( painting ) return;

  forint i = height-1; i > 0; --i ){

   stars[i] = stars[i-1];
  }

  stars[0] = ( generator.nextInt() % ( 3 * width ) ) / 2;
  if( stars[0] >= width ){
   stars[0] = -1;
  }

  repaint();
 }

 protected void paint( Graphics g ){
  painting = true;

  g.setColor( 0, 0, 0 );
  g.fillRect( 0, 0, width, height );

  g.setColor( 255, 255, 255 );

  forint y = 0; y < height; ++y ){
   int x = stars[y];
   if( x == -1 ) continue;

   g.drawLine( x, y, x, y );
  }

  painting = false;
 }

 protected void keyPressed( int keyCode ){
  exit();
 }
}

(出处:http://www.cncms.com)


 

Tags:使用 Timer 制作

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接