【Java开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学会员整理了Java开源代码-Bird_MIDlet.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();
}
}
}