📄 manu.java
字号:
import java.io.IOException;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class Manu extends Const implements Runnable {
private MainMidlet m;
ListBox lbManu, lbMusic;
public static ListBox lbload;
int lb = 0;
boolean bhelp = false, bmanu = true;
private Image imanu;
Manu(MainMidlet m) {
this.m = m;
try {
imanu = Image.createImage("/back.png");
lbManu = new ListBox();
lbMusic = new ListBox();
lbload = new ListBox();
lbMusic.addItem("音乐开");
lbMusic.addItem("音乐关");
lbMusic.addItem("返回菜单");
lbManu.addItem("新游戏");
lbManu.addItem("读取游戏");
lbManu.addItem("选项");
lbManu.addItem("帮助");
lbManu.addItem("退出");
lbManu.setLineSpace(5);
lbManu.setBorder(false);
lbManu.setBackground(false);
lbManu.setFontSize(Font.SIZE_LARGE);
lbManu.setBarColor(0xff5678, true);
lbMusic.setBackground(true);
} catch (IOException e) {
e.printStackTrace();
}
new Thread(this).start();
}
public void paint(Graphics g) {
g.drawImage(imanu, 0, 0, 0);
Const.drawString(g, "灵魂转生 一抉择 ", 80, getHeight() / 9,
100, 40, false, Font.SIZE_LARGE, 15, 20, false);
if (lb == 0) {
drawManu(g);
}
if (lb == 1) {
lbMusic.draw(g, x, y, 100, 20 * lbMusic.getMaxItem());
}
if (lb == 2) {
SaveAndLoad.lbLoad.draw(g, x, y, 100, 30 * SaveAndLoad.lbLoad
.getMaxItem());// 一定得注意这个宽度和长度,任何一个细节都会出现莫名奇妙的错误;
}
}
protected void keyPressed(int k) {
long time = 0;
if (lb == 0) {
switch (k) {
case KEY_UP:
case KEY_NUM2:
lbManu.movePrev();
refresh();
break;
case KEY_DOWN:
case KEY_NUM8:
lbManu.moveNext();
refresh();
break;
// case XCanvas.KEY_FIRE:
case KEY_5:
case KEY_FIRE:
time = System.currentTimeMillis();
switch (lbManu.getIndex()) {
case 0:
exit();
m.showGame();
break;
case 1:
// loadgame;
lb = 2;
refresh();
break;
case 2:// 为了节省空间,直接将另外一个音乐菜单合并到这里;
lb = 1;
refresh();
break;
case 3:
exit();
m.showHelp();
break;
case 4:
m.exit();
}
break;
}
}
if (lb == 1) {
switch (k) {
case KEY_UP:
case KEY_NUM2:
lbMusic.movePrev();
refresh();
break;
case KEY_DOWN:
case KEY_NUM8:
lbMusic.moveNext();
refresh();
break;
// case XCanvas.KEY_FIRE:
case KEY_5:
case KEY_FIRE:
if (System.currentTimeMillis() - time >= 1000)// 必须加上这句延迟判断,不然下次再进入这个音乐选项的时候,就在退出的地方重复判断了,因为按的回车将
// 回车键位置就在那个退出地方,按键相应的同时就会执行到下面的判断语句中;首先回车进入菜单,lb=1,然后判断回车键是否按下;加上后,必然在第一次按键的时候不满足时间延迟为1,只有第二次按键才有效;
switch (lbMusic.getIndex()) {
case 0:
m.s.playSound();
break;
case 1:
m.s.stopSound();
break;
case 2:
lb = 0;
refresh();
break;
}
}
}
if (lb == 2) {
switch (k) {
case KEY_UP:
case KEY_NUM2:
SaveAndLoad.lbLoad.movePrev();
refresh();
break;
case KEY_DOWN:
case KEY_NUM8:
SaveAndLoad.lbLoad.moveNext();
refresh();
break;
case KEY_FIRE:
if (System.currentTimeMillis() - time >= 1000)
switch (SaveAndLoad.lbLoad.getIndex()) {
case 0:
new SaveAndLoad(m).load(1, new Game(m));
break;
case 1:
new SaveAndLoad(m).load(2, new Game(m));
break;
case 2:
new SaveAndLoad(m).load(3, new Game(m));
break;
}
break;
case KEY_NUM1:
lb = 0;
refresh();
break;
}
}
}
public void run() {
repaint();
serviceRepaints();
}
protected void drawManu(Graphics g) {
lbManu.draw(g, x, y, 100, 30 * lbManu.getMaxItem());
}
public void exit() {
lbManu = null;
lbMusic = null;
imanu = null;
}
void refresh() {
repaint();
serviceRepaints();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -