📄 initcanvas.java
字号:
import javax.microedition.lcdui.*;
import java.util.*;
import java.io.*;
/**
* 该类描述了游戏启动时的初始界面。
*/
public class InitCanvas extends Canvas {
private BoxMIDlet midlet;
private Displayable nextScreen; //初始界面的下一个显示界面
private int screenWidth; //屏幕的宽度
private int screenHeight; //屏幕的高度
private Image img; //显示的图片
private Timer timer; //定时器
private int clipX; //剪切矩形
private int clipY;
private int clipWidth; //剪切矩形宽
private int clipHeight; //剪切矩形高
private int maxClipWidth; //剪切矩形的最大宽度
private int maxClipHeight; //剪切矩形的最大高度
private boolean first = true; //
//构造方法,创建一个初始显示界面,同时指定下一个显示界面。
public InitCanvas(BoxMIDlet midlet, Displayable nextScreen) {
this.midlet = midlet;
this.nextScreen = nextScreen;
screenWidth = this.getWidth();
screenHeight = this.getHeight();
try {
img = Image.createImage("/img/init.png");
maxClipWidth = img.getWidth();
maxClipHeight = img.getHeight();
}
catch(IOException ie) {
System.out.println("init-error: " + ie.toString());
}
if(screenWidth < maxClipWidth) {
maxClipWidth = screenWidth;
}
if(screenHeight < maxClipHeight) {
maxClipHeight = screenHeight;
}
}
//画布显示前,系统将调用该方法。在该方法中,将创建并启动一个定时器
protected void showNotify() {
clipWidth = 0;
clipHeight = 0;
timer = new Timer(); //创建定时器
TimerTask task = new TimerTask() {//定时器的任务
//该方法是任务的执行体
public void run() { //
if(clipWidth >= maxClipWidth && clipHeight >= maxClipWidth) {
Display display = Display.getDisplay(midlet);
display.setCurrent(nextScreen);
}
clipWidth += 2;
clipHeight +=2;
clipX = (screenWidth - clipWidth)/2;
clipY = (screenHeight - clipHeight)/2;
repaint();
}
};
//为定时器确定任务:100毫秒后执行任务task,之后每隔100毫秒执行一次任务task
timer.schedule(task, 100, 100);
first = true;
}
//绘制界面
protected void paint(Graphics g) {
if(first) { //第一次显示,清除画布
g.setColor(0x00FFFFFF);
g.fillRect(0, 0, screenWidth, screenHeight);
first = false;
}
//设置剪切矩形,绘制图片及文字信息
g.setClip(clipX, clipY, clipWidth, clipHeight);
g.drawImage(img, screenWidth/2, screenHeight/2, Graphics.HCENTER|Graphics.VCENTER);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE));
g.drawString("推 箱 子", screenWidth/2, screenHeight/2, Graphics.HCENTER|Graphics.BOTTOM);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL));
g.drawString("作者:阳 光", screenWidth/2, screenHeight/2+30, Graphics.HCENTER|Graphics.BOTTOM);
}
//画布被从屏幕上移走后,系统马上调用该方法。
protected void hideNotify() {
timer.cancel(); //取消定时器
}
//显示画布
public void show() {
Display display = Display.getDisplay(midlet);
display.setCurrent(this);
}
//进入下一界面。
public void dismiss() {
Display display = Display.getDisplay(midlet);
display.setCurrent(nextScreen);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -