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

📄 manu.java

📁 应用j2me技术开发的手机游戏
💻 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 + -