TimerDemo.java~
上传用户:haojie1228
上传日期:2022-08-08
资源大小:347k
文件大小:2k
源码类别:

通讯/手机编程

开发平台:

Java

  1. package timer;
  2. import javax.microedition.midlet.*;
  3. import javax.microedition.lcdui.*;
  4. import java.util.*;
  5. public class TimerDemo extends MIDlet {
  6.   Display display;
  7.   StarField field = new StarField();
  8.   FieldMover mover = new FieldMover();
  9.   Timer timer = new Timer();
  10.   public TimerDemo() {
  11.     display = Display.getDisplay(this);
  12.   }
  13.   protected void destroyApp(boolean unconditional) {
  14.   }
  15.   protected void startApp() {
  16.     display.setCurrent(field);
  17.     timer.schedule(mover, 100, 100);
  18.   }
  19.   protected void pauseApp() {
  20.   }
  21.   public void exit() {
  22.     timer.cancel(); // stop scrolling
  23.     destroyApp(true);
  24.     notifyDestroyed();
  25.   }
  26.   class FieldMover extends TimerTask {
  27.     public void run() {
  28.       field.scroll();
  29.     }
  30.   }
  31.   class StarField extends Canvas {
  32.     int height;
  33.     int width;
  34.     int[] stars;
  35.     Random generator = new Random();
  36.     boolean painting = false;
  37.     public StarField() {
  38.       height = getHeight();
  39.       width = getWidth();
  40.       stars = new int[height];
  41.       for (int i = 0; i < height; ++i) {
  42.         stars[i] = -1;
  43.       }
  44.     }
  45.     public void scroll() {
  46.       if (painting)return;
  47.       for (int i = height - 1; i > 0; --i) {
  48.         stars[i] = stars[i - 1];
  49.       }
  50.       stars[0] = (generator.nextInt() % width);
  51.       if (stars[0] >= width) {
  52.         stars[0] = -1;
  53.       }
  54.       repaint();
  55.     }
  56.     protected void paint(Graphics g) {
  57.       painting = true;
  58.       g.setColor(0, 0, 0);
  59.       g.fillRect(0, 0, width, height);
  60.       g.setColor(255, 255, 255);
  61.       for (int y = 0; y < height; ++y) {
  62.         int x = stars[y];
  63.         if (x == -1)continue;
  64.         g.drawLine(x, y, x, y);
  65.       }
  66.       painting = false;
  67.     }
  68.     protected void keypressed(int keycode) {
  69.       exit();
  70.     }
  71.   }
  72. }