MenuCanvas.java
上传用户:pyly5030
上传日期:2021-09-17
资源大小:174k
文件大小:4k
源码类别:

射击游戏

开发平台:

Java

  1. import java.io.IOException;
  2. import javax.microedition.lcdui.Alert;
  3. import javax.microedition.lcdui.AlertType;
  4. import javax.microedition.lcdui.Canvas;
  5. import javax.microedition.lcdui.Display;
  6. import javax.microedition.lcdui.Font;
  7. import javax.microedition.lcdui.Graphics;
  8. import javax.microedition.lcdui.Image;
  9. public class MenuCanvas extends Canvas implements Runnable{
  10. private GameCanvasMidlet midlet;
  11. private Display display;
  12. //set font
  13. static final Font lowFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_SMALL);
  14. static final Font highFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
  15. //set color
  16. static final int lowColor = 0x00FFFFFF;
  17. static final int highColor = 0x00FF0000;
  18. static final int highBgColor = 0x00CCCCCC;
  19. static int width;
  20. static int height = 320;
  21. static int startHeight;
  22. static final int spacing = highFont.getHeight()/2;
  23. static final String[] mainMenu = {"新游戏","最高分","设置","帮助","退出游戏"};
  24. static int menuIdx;
  25. private Alert alert;
  26. static Image bgImage;
  27. public MenuCanvas(GameCanvasMidlet midlet) throws IOException{
  28. this.midlet = midlet;
  29. width = getWidth();
  30. //height = getHeight();
  31. startHeight = (highFont.getHeight()* mainMenu.length) + (mainMenu.length-1)*spacing;
  32. startHeight = (height-startHeight)/2;
  33. menuIdx = 0;
  34. bgImage = Image.createImage("/menubg.jpg");
  35. Thread menuThread = new Thread(this);
  36. menuThread.start();
  37. }
  38. protected void paint(Graphics g) {
  39. try {
  40. //Image image = Image.createImage("/menubg.jpg");
  41. g.drawImage(bgImage, 0,0, g.TOP|g.LEFT);
  42. } catch (Exception e) {
  43. e.printStackTrace();
  44. }
  45. g.setColor(0x00FFFFFF);
  46. g.setFont(lowFont);
  47. //g.fillRect(0, 0, width, height);
  48. //g.setColor(0x00000000);
  49. g.drawString("v0.1", width-30, height-25, g.TOP|g.LEFT);
  50. for(int i=0;i<mainMenu.length;i++){
  51. if(i==menuIdx){
  52. g.setColor(highBgColor);
  53. g.fillRect(0, startHeight+(i*highFont.getHeight())+spacing, width, highFont.getHeight());
  54. g.setFont(highFont);
  55. g.setColor(highColor);
  56. g.drawString(mainMenu[i], (width-highFont.stringWidth(mainMenu[i]))/2, startHeight+(i*highFont.getHeight()+spacing), 20);
  57. }else{
  58. g.setFont(lowFont);
  59. g.setColor(lowColor);
  60. g.drawString(mainMenu[i], (width-lowFont.stringWidth(mainMenu[i]))/2, startHeight+(i*highFont.getHeight()+spacing), 20);
  61. }
  62. }
  63. }
  64. public void run() {
  65. while(true){
  66. repaint();
  67. try {
  68. Thread.sleep(15L);
  69. } catch (Exception e) {
  70. e.printStackTrace();
  71. }
  72. }
  73. }
  74. protected void keyPressed(int code) {
  75. try {
  76. int key = getGameAction(code);
  77. if(key == Canvas.UP && menuIdx -1 >= 0){
  78. menuIdx--;
  79. }else if(key==Canvas.DOWN && menuIdx+1 < mainMenu.length){
  80. menuIdx++;
  81. }else if((key & Canvas.FIRE) != 0){
  82. switch(menuIdx){
  83. case 0:
  84. MyGameCanvas canvas = new MyGameCanvas();
  85. display = Display.getDisplay(midlet);
  86. display.setCurrent(canvas);
  87. break;
  88. case 1:
  89. showHighScore();
  90. break;
  91. case 2:
  92. showSetting();
  93. break;
  94. case 3:
  95. showHelp();
  96. break;
  97. case 4:
  98. midlet.exit();
  99. break;
  100. }
  101. }
  102. } catch (Exception e) {
  103. e.printStackTrace();
  104. }
  105. }
  106. private void showHighScore() {
  107. alert = new Alert("HighScore", "1.12000",
  108. null, null);
  109. alert.setTimeout(Alert.FOREVER);
  110. alert.setType(AlertType.INFO);
  111. midlet.mainMenuScreenShow(alert);
  112. }
  113. private void showSetting() {
  114. alert = new Alert("Setting", "游戏设置",
  115. null, null);
  116. alert.setTimeout(Alert.FOREVER);
  117. alert.setType(AlertType.INFO);
  118. midlet.mainMenuScreenShow(alert);
  119. }
  120. private void showHelp() {
  121. alert = new Alert("Help", "选择产品支持和帮助中心查看产品支持信息,包括常见问题、"
  122. + "有用链接、提示和“如何”文章以及最新下载资源。从以下类别中选择产品或访问按字母顺序排列的产品支持中心索引。",
  123. null, null);
  124. alert.setTimeout(Alert.FOREVER);
  125. alert.setType(AlertType.INFO);
  126. midlet.mainMenuScreenShow(alert);
  127. }
  128. }