📄 mmenucanvas.java
字号:
import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Image;import java.io.IOException;import javax.microedition.midlet.MIDlet;import javax.microedition.lcdui.Display;import java.lang.Thread;public class mmenuCanvas extends Canvas { private final static byte State_Menu=1; private final static byte State_Score=2; private final static byte State_Option=3; private final static byte State_Choose=4; private byte curState; private Image menu; private int csel,optsel,gamesel; private Image selImg; private MIDlet parent=null; private GameOpt option=null; private SnakeCanvas classic=null; private NewSnakeCanvas newSnake=null; private Thread theGame; private boolean backwait=false; public mmenuCanvas(MIDlet p) { try{ menu=Image.createImage("/menu.png"); }catch(IOException ioe){System.out.println(ioe.getMessage());}; int[] selrgb=new int[1980]; for(int i=0;i<22;i++) for(int j=0;j<90;j++) if((i+j)%2==0)selrgb[i*90+j]=0xff8040; else selrgb[i*90+j]=0xffff8040; selImg=Image.createRGBImage(selrgb,90,22,true); curState=State_Menu; csel=0; optsel=0; gamesel=0; option=new GameOpt(); parent=p; setFullScreenMode(true);// System.out.println("active thread: "+Thread.activeCount()); } protected void paint(Graphics g) {// System.out.println("active thread: "+Thread.activeCount());// System.out.println("free memory: "+Runtime.getRuntime().freeMemory()); switch(curState){ case State_Menu: g.setColor(0xff8040); g.fillRect(0,0,128,160); g.drawImage(menu,20,20,g.TOP|g.LEFT); for(int i=0;i<4;i++) g.drawImage(selImg,20,21+22*i,g.TOP|g.LEFT); g.setClip(20,21+22*csel,90,22); g.drawImage(menu,20,20,g.TOP|g.LEFT); g.setClip(0,0,128,160); break; case State_Score: g.setColor(0xffffff); g.fillRect(0,0,128,160); g.setColor(0); g.drawString("SCORE",40,70,g.TOP|g.LEFT); break; case State_Option: g.setColor(0xffffff); g.fillRect(0,0,128,160); if(optsel==0){ g.setColor(255,128,0); g.drawString("Sound: "+ option.sound,20,50,g.TOP|g.LEFT); g.setColor(0); g.drawString("Vibrate: "+ option.vibrate,20,70,g.TOP|g.LEFT); }else{ g.setColor(0); g.drawString("Sound: "+ option.sound,20,50,g.TOP|g.LEFT); g.setColor(255,128,0); g.drawString("Vibrate: "+ option.vibrate,20,70,g.TOP|g.LEFT); } break; case State_Choose: g.setColor(255,128,64); g.fillRect(0,0,128,160); g.setColor(0,255,255); g.drawString("CLASSIC",20,20,g.TOP|g.LEFT); g.drawString(" NEW ",20,40,g.TOP|g.LEFT); g.drawString(" BACK ",22,60,g.TOP|g.LEFT); g.setColor(255,0,0); if(gamesel==0) g.drawString("CLASSIC",20,20,g.TOP|g.LEFT); else if(gamesel==1) g.drawString(" NEW ",20,40,g.TOP|g.LEFT); else if(gamesel==2) g.drawString(" BACK ",22,60,g.TOP|g.LEFT); break; } } public void keyReleased(int keyCode){ if(backwait){backwait=false;return;} int gamekey=getGameAction(keyCode); switch(curState){ case State_Menu: if(gamekey==DOWN) {csel+=1;if(csel==4) csel=0;repaint();} else if(gamekey==UP) {csel-=1; if(csel==-1) csel=3;repaint();} else if(gamekey==FIRE){ if(csel==0){ curState=State_Choose; gamesel=0; repaint(); }else if(csel==1){ curState=State_Score; repaint(); serviceRepaints(); }else if(csel==2){ optsel=0; curState=State_Option; repaint(); serviceRepaints(); }else if(csel==3){ parent.notifyDestroyed(); } } break; case State_Score: csel=0; curState=State_Menu; repaint(); serviceRepaints(); break; case State_Option: if(gamekey==UP||gamekey==DOWN){ optsel=1-optsel; repaint(); }else if(gamekey==LEFT||gamekey==RIGHT){ if(optsel==1) option.vibrate=!option.vibrate; else option.sound=!option.sound; repaint(); }else if(gamekey==FIRE){ csel=0; curState=State_Menu; repaint(); } break; case State_Choose: if(gamekey==UP){ gamesel-=1;if(gamesel==-1) gamesel=0;repaint();} else if(gamekey==DOWN){ gamesel+=1; if(gamesel==3) gamesel=2;repaint();} else if(gamekey==FIRE){ if(gamesel==0){ System.gc(); classic=new SnakeCanvas(this,option); Display.getDisplay(parent).setCurrent(classic); theGame=new Thread(classic); theGame.start(); }else if(gamesel==1){ System.gc(); newSnake=new NewSnakeCanvas(this,option); Display.getDisplay(parent).setCurrent(newSnake); theGame=new Thread(newSnake); theGame.start(); }else{ csel=0; curState=State_Menu; repaint(); } } break; } } public void backToMenu(){ curState=State_Menu; csel=0; backwait=true; Display.getDisplay(parent).setCurrent(this); repaint(); } }// System.out.println("free memory: "+Runtime.getRuntime().freeMemory());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -