?? menu.java~2~
字號:
package paopao;import javax.microedition.lcdui.*;import com.nokia.mid.ui.*;public class Menu extends FullCanvas implements Runnable { int state;//主菜單 final int screenw = getWidth(); final int screenh = getHeight(); final int paintw = 168; final int painth = 182; final int midx = paintw / 2; final int midy = painth / 2; final int orgx = (screenw - paintw) / 2; final int orgy = (screenh - painth) / 2; final int MENU_INIT = 0; final int MENU_SELECT = 1000; final int MENU_LOADING = 2000; final int MENU_SETKEY = 3000; final int MENU_HELP_RANK = 4000; final int MENU_HELP = 5000; final int MENU_RANK = 6000; Image[] img = new Image[8]; final int helpStrHeight = -150;//主選擇菜單 int fingerCount; int selectNum;//this is loading int progress;//this is setkey boolean isSettingKey = false; int nowKey;//this is help and rank boolean isHelp = true;//this is help int helpStrY; //幫助的起始y坐標 final int minHelpTop = -300; //幫助的y坐標上限 int heightPerLine = 20;//this is rank//this is thread Thread thread = null; int interval = 50; boolean killThread = false; int pressedKeyCode = 10000; static final String DIR = "/resource/"; public Menu() { Resource.initrecord(); Resource.init(16); state = MENU_INIT; } protected void keyPressed(int KeyCode) { pressedKeyCode = KeyCode; System.out.println("" + KeyCode); } protected void doKeyEvent(int keyCode) { if (keyCode == 10000) return; else switch (state) { case MENU_INIT: return; case MENU_SELECT: if (keyCode == Resource.KEY_UP) { selectNum--; selectNum = (selectNum < 0 ? 3 : selectNum); } else if (keyCode == Resource.KEY_DOWN) { selectNum++; selectNum %= 4; } else if (keyCode == Resource.KEY_FIRE) { switch (selectNum) { case 0: state = MENU_LOADING; break; case 1: state = MENU_SETKEY; break; case 2: state = MENU_HELP_RANK; break; case 3: PaoPao.quitApp(); break; } } break; case MENU_LOADING: break; case MENU_SETKEY: if (!isSettingKey) { if (keyCode == Resource.KEY_UP) { nowKey++; nowKey = (nowKey > Resource.setupKeyNum ? 0 : nowKey); } if (keyCode == Resource.KEY_DOWN) { nowKey--; nowKey = (nowKey < 0 ? Resource.setupKeyNum : nowKey); } if (nowKey > 0 && keyCode == Resource.KEY_LS) { isSettingKey = true; Resource.key[nowKey - 1] = 0; } if (nowKey == 0 && keyCode == Resource.KEY_LS) Resource.isSoundOn = !Resource.isSoundOn; if (keyCode == Resource.KEY_RS) { this.serviceRepaints(); state = MENU_HELP_RANK; repaint(); Resource.saveOption(); } } else { if (Resource.GetUserKeyName(keyCode) != " ") { Resource.key[nowKey - 1] = (byte) keyCode; isSettingKey = false; } } break; case MENU_HELP_RANK://選擇進入幫助或者排行榜 if (keyCode == Resource.KEY_DOWN || keyCode == Resource.KEY_UP)//選擇好 isHelp = !isHelp; else if (keyCode == Resource.KEY_LS || keyCode == Resource.KEY_FIRE) { if (isHelp) state = MENU_HELP; else state = MENU_RANK; } else if (keyCode == Resource.KEY_RS) state = MENU_SELECT; break; case MENU_HELP: if (keyCode == Resource.KEY_UP) { helpStrY += 100; if (helpStrY > 0) helpStrY = 0; } else if (keyCode == Resource.KEY_DOWN) { helpStrY -= 100; if (helpStrY < helpStrHeight) helpStrY = helpStrHeight; } else if (keyCode == Resource.KEY_RS) { this.serviceRepaints(); state = MENU_HELP_RANK; repaint(); } break; case MENU_RANK: if (keyCode == Resource.KEY_RIGHT || keyCode == Resource.KEY_FIRE) state = MENU_HELP_RANK; break; } pressedKeyCode = 10000; } protected void show() { if (thread == null) { thread = new Thread(this); thread.start(); } } protected void paint(Graphics g) { g.setColor(0, 0, 0); g.fillRect(0, 0, screenw, screenh); g.translate(orgx, orgy); g.setClip(0, 0, paintw, painth); g.fillRect(0, 0, paintw, painth); switch (state) { case MENU_INIT: g.setColor(0, 0, 0); g.fillRect(0, 0, paintw, painth); break; case MENU_SELECT: g.setColor(0, 0, 0); g.fillRect(0, 0, paintw, painth); g.drawImage(img[0], midx, 0, Graphics.TOP | Graphics.HCENTER); g.drawImage(img[1], midx, 130, Graphics.VCENTER | Graphics.HCENTER); g.drawImage(img[2 + fingerCount], 18, 103 + selectNum * 18, Graphics.VCENTER | Graphics.HCENTER); break; case MENU_LOADING: g.drawImage(img[6], midx, 15, Graphics.TOP | Graphics.HCENTER); g.drawImage(img[7], midx, 150, Graphics.TOP | Graphics.HCENTER); g.setColor(162, 28, 50); g.fillRect(45, 151, progress * 7, 4); break; case MENU_SETKEY: g.setColor(255, 255, 255); g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL)); g.drawString("音效:" + (Resource.isSoundOn ? "開" : "關"), 10, 10, g.TOP | g.LEFT); for (int i = 0; i < Resource.setupKeyNum; i++) g.drawString(Resource.keyDes[i] + Resource.GetUserKeyName(Resource.key[i]), 10, 25 + i * 15, 20); g.drawRect(7, 9 + 15 * nowKey, paintw - 14, 14); g.setColor(248, 248, 53); if (!isSettingKey) { g.drawString("請按左軟件修改設置", paintw / 2, 90, g.TOP | g.HCENTER); g.drawImage(img[4], paintw - 5, painth - 5, g.RIGHT | g.BOTTOM); } else g.drawString("請按下要設置的按鍵", paintw / 2, 90, g.TOP | g.HCENTER); break; case MENU_HELP_RANK: drawFrame(g); g.setColor(175, 165, 52); if (isHelp) g.fillRect(0, 10, paintw, 15); else g.fillRect(0, 25, paintw, 15); g.setColor(255, 255, 255); g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL)); g.drawString("幫助信息", 10, 10, g.TOP | g.LEFT); g.drawString("本地排行", 10, 25, g.TOP | g.LEFT); break; case MENU_HELP: drawFrame(g); g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL)); g.setClip(5, 5, paintw - 10, painth - 10); g.setColor(255, 255, 255); drawHelpString(g, Resource.helpStr, 8, helpStrY + 6); g.setClip(0, 0, paintw, painth); //g.drawImage(img[4],paintw-5,painth-5,g.RIGHT |g.BOTTOM ); break; case MENU_RANK: drawFrame(g); g.setColor(255, 255, 255); g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL)); g.drawString("本地分數排行", paintw / 2, 10, g.HCENTER | g.TOP); for (int i = 0; i < 5; i++) { g.drawString( (i + 1) + ".", 10, 30 + i * 15, g.TOP | g.LEFT); } // g.drawImage(img[4],paintw - 5,painth - 5,g.RIGHT | g.BOTTOM ); break; default: break; } } public void run() { /* while(!killThread) { switch(state) { case MENU_INIT: try { img[0] = Image.createImage(Resource.DIR + "logo.png"); img[1] = Image.createImage(Resource.DIR + "select.png"); img[2] = Image.createImage(Resource.DIR + "finger0.png"); img[3] = Image.createImage(Resource.DIR + "finger1.png"); img[4] = Image.createImage(Resource.DIR + "finger2.png"); img[5] = Image.createImage(Resource.DIR + "finger3.png"); img[6] = Image.createImage(Resource.DIR + "boy.png"); img[7] = Image.createImage(Resource.DIR + "progress.png"); } catch(Exception ex) { System.out.println("Error int create new img!"); } state = MENU_SELECT; break; case MENU_SELECT: //this is for lover circle act fingerCount ++; fingerCount %= 4; break; case MENU_LOADING: Resource.setImage(Resource.PLAYER,Resource.DIR + "player.png"); progress += 1; repaint(); Resource.setImage(Resource.BOARD,Resource.DIR + "board.png"); progress += 2; repaint(); Resource.setImage(Resource.BG,Resource.DIR + "bg.png"); Resource.setImage(Resource.PH,Resource.DIR + "ph.png"); Resource.setImage(Resource.WALL_LEFT,Resource.DIR + "wall_left.png"); progress += 2; repaint(); Resource.setImage(Resource.TOOTH,Resource.DIR + "tooth.png"); Resource.setImage(Resource.LOGO,Resource.DIR + "logo.png"); progress += 2; repaint(); Resource.setImage(Resource.SELECT,Resource.DIR + "select.png"); Resource.setImage(Resource.FINGER0,Resource.DIR + "finger0.png"); Resource.setImage(Resource.FINGER1,Resource.DIR + "finger1.png"); Resource.setImage(Resource.FINGER2,Resource.DIR + "finger2.png"); Resource.setImage(Resource.FINGER3,Resource.DIR + "finger3.png"); progress += 1; repaint(); Resource.setImage(Resource.BOY,Resource.DIR + "boy.png"); Resource.setImage(Resource.PROGRESS,Resource.DIR + "progress.png"); Resource.setImage(Resource.WALL_RIGHT,Resource.DIR + "wall_right.png"); progress += 2; repaint(); Resource.setImage(Resource.OVER,Resource.DIR + "over.png"); progress += 1; repaint(); killThread = true; break; case MENU_SETKEY: break; case MENU_HELP_RANK: break; case MENU_HELP: break; case MENU_RANK: break; } //switch(state) try { this.doKeyEvent(pressedKeyCode); repaint(); thread.sleep(interval); } catch(Exception ex){} } //while(!killThread) serviceRepaints(); img = null; System.gc(); PaoPao.shiftCanvas(PaoPao.GAMEWORLD_ID,6); */ } //run void drawFrame(Graphics g) { g.setColor(46, 49, 146); g.fillRect(2, 2, paintw - 4, painth - 4); g.setColor(128, 128, 128); g.drawLine(2, 2, 2, painth - 2); g.drawLine(2, 4, paintw - 2, 4); g.drawLine(2 + paintw - 7, 2, 2 + paintw - 7, painth - 2); g.drawLine(2, 4 + painth - 6, paintw - 2, 4 + painth - 6); g.setColor(184, 184, 184); g.drawLine(3, 2, 3, painth - 2); g.drawLine(2, 3, paintw - 2, 3); g.drawLine(3 + paintw - 7, 2, 3 + paintw - 7, painth - 2); g.drawLine(2, 3 + painth - 6, paintw - 2, 3 + painth - 6); g.setColor(248, 248, 248); g.drawLine(4, 2, 4, painth - 2); g.drawLine(2, 2, paintw - 2, 2); g.drawLine(4 + paintw - 7, 2, 4 + paintw - 7, painth - 2); g.drawLine(2, 2 + painth - 6, paintw - 2, 2 + painth - 6); //g.drawImage(img[1],3,3,g.HCENTER|g.VCENTER ); // g.drawImage(img[1],3,painth-3,g.HCENTER|g.VCENTER ); // g.drawImage(img[1],paintw-3,3,g.HCENTER|g.VCENTER ); //g.drawImage(img[1],paintw-3,painth-3,g.HCENTER|g.VCENTER ); } public static void drawHelpString(Graphics g, String str, int x, int y) { System.gc(); StringBuffer output = new StringBuffer(30); int j = 0; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) != '&') { output.append(str.charAt(i)); } else { if (y + 12 * j > g.getClipY() - 20 && y + 12 * j < g.getClipY() + g.getClipHeight()) g.drawString(output.toString(), x, y + 12 * j, g.TOP | g.LEFT); j++; output.delete(0, 29); } } }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -