progressthread.java
来自「一个J2ME的RPG游戏」· Java 代码 · 共 101 行
JAVA
101 行
import javax.microedition.lcdui.*;
public class ProgressThread extends Canvas implements Runnable {
public boolean loadProgressIsOver = false;
private volatile Thread progressThread = null;
private int width;
private int height;
private long startTime;
private long endTime;
private static final int FRAME_TIME = 200;
private Font font = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD,
Font.SIZE_LARGE);
public int gaugeCnt = 0;
private int progressInterval = 1;
private static final int PROGRESS_END = 150;
private RPGMidlet midlet;
public ProgressThread(RPGMidlet midlet) {
loadProgressIsOver = false;
this.midlet = midlet;
this.width = this.getWidth();
this.height = this.getHeight();
}
protected void paint(Graphics g) {
drawGaugeScreen(g);
}
private void drawGaugeScreen(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, width, height);
g.setColor(255, 0, 0);
g.drawString("游戏装载中...",
(width - font.stringWidth("游戏装载中...")) / 2 + 10,
height / 2 - 25, g.LEFT | g.TOP);
g.setColor(255, 0, 0);
g.drawRect(10, height / 2, width - 20, 20);
g.setColor(0, 0, 255);
g.fillRect(10 + 1, height / 2 + 1,
gaugeCnt * (width - 20) / PROGRESS_END - 1, 20 - 1);
g.setColor(255, 0, 0);
g.drawString(String.valueOf(gaugeCnt * 100 / PROGRESS_END),
(width - font.stringWidth("000")) / 2,
height / 2 + 4, g.LEFT | g.TOP);
g.drawString("%",
(width - font.stringWidth("000")) / 2 +
font.stringWidth("00"),
height / 2 + 4, g.LEFT | g.TOP);
}
public void start() {
progressThread = new Thread(this);
progressThread.setPriority(Thread.MIN_PRIORITY + 1);
progressThread.start();
}
public void run() {
try {
Thread currentThread = Thread.currentThread();
while (currentThread == progressThread) {
startTime = System.currentTimeMillis();
repaint(0, 0, width, height);
serviceRepaints();
gaugeCnt += progressInterval;
if (((RPGMidlet) midlet).getCanvas() != null) {
progressInterval += 1;
}
if (gaugeCnt >= PROGRESS_END) {
if (((RPGMidlet) midlet).getCanvas() == null) {
gaugeCnt -= progressInterval;
} else {
loadProgressIsOver = true;
Display.getDisplay(midlet).setCurrent(((RPGMidlet)
midlet).
getCanvas());
((RPGCanvas) ((RPGMidlet) midlet).getCanvas()).
start();
break;
}
}
endTime = System.currentTimeMillis();
if ((endTime - startTime) < FRAME_TIME) {
Thread.sleep(FRAME_TIME - (endTime - startTime));
}
}
} catch (InterruptedException ie) {
System.out.println(ie.toString());
}
}
public void stop() {
progressThread = null;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?