⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bird_midlet.java

📁 本光盘是《J2ME无线移动游戏开发》一书的配套光盘
💻 JAVA
字号:
package ch08;

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

public class Bird_MIDlet
    extends MIDlet
    implements CommandListener {

  //声明一个代表组成动画图片数量的整型变量
  private static final int BIRD_FRAMES = 7;

  //声明一个代表动画数量的整型变量
  private static final int NUM_BIRDS = 5;

  //声明一个Display对象
  private Display display;

  //声明一个控制绘制的Timer对象
  private Timer timer = new Timer();

  //声明一个承载控制各动画绘制Timer对象的数组
  private Bird_Image[] birds;

  //声明一个随机对象
  private Random random = new Random();

  //声明一个退出按钮Command对象
  public static final Command exitCommand =
      new Command("退出", Command.EXIT, 1);

  //构造器
  public Bird_MIDlet() {
  }

  /*
   1.启动应用程序
   */
  protected void startApp() throws MIDletStateChangeException {
    if (display == null) {
      display = Display.getDisplay(this);
      initMIDlet();
    }
  }

  //获取Display对象
  public Display getDisplay() {
    return display;
  }

  /*
   2.初始化
   */
  protected void initMIDlet() {
    try {
      Bird_Canvas bc = new Bird_Canvas(getDisplay());
      getDisplay().setCurrent(bc);
      bc.addCommand(exitCommand);
      bc.setCommandListener(this);

      int w = bc.getWidth();
      int h = bc.getHeight();
      Image[] images = loadFrames("/icons/bird/bird", BIRD_FRAMES);
      birds = new Bird_Image[NUM_BIRDS];
      for (int i = 0; i < NUM_BIRDS; ++i) {
        Bird_Image b = new Bird_Image(bc, images);
        birds[i] = b;
        bc.add(b);
        b.move(genRandom(w), genRandom(h));
        timer.schedule(b, genRandom(1000), genRandom(400));
      }
    }
    catch (IOException e) {
      System.out.println("装载图片失败!");
      exitMIDlet();
    }
  }

  /*
   3.装载图片
   */
  private Image[] loadFrames(String name, int frames) throws IOException {
    Image[] images = new Image[frames];
    for (int i = 0; i < frames; ++i) {
      images[i] = Image.createImage(name + i + ".png");
    }

    return images;
  }

  /*
   4.产生一个随机数
   */
  private int genRandom(int upper) {
    return (Math.abs(random.nextInt()) % upper);
  }

  //挂起应用程序
  protected void pauseApp() {
  }

  /*
   5.撤消应用程序
   */
  protected void destroyApp(boolean unconditional) throws
      MIDletStateChangeException {
    exitMIDlet();
  }

  /*
   6.实际执行退出应用程序
   */
  public void exitMIDlet() {
    timer.cancel();
    notifyDestroyed();
  }

  /*
   7.响应按钮事件
   */
  public void commandAction(Command c,
                            Displayable d) {
    if (c == exitCommand) {
      exitMIDlet();
    }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -