Menu.java
上传用户:szhnad
上传日期:2020-12-30
资源大小:2k
文件大小:3k
源码类别:

游戏

开发平台:

Java

  1. package com.cpt;
  2. import javax.microedition.lcdui.*;
  3. import javax.microedition.lcdui.game.*;
  4. public class Menu {
  5.     private String leftOption; 
  6.     private String rightOption;
  7.     private String cancelOption = "Cancel"; 
  8.     private String[] menuOptions;
  9.     private int padding = 5; 
  10.    public Menu(String leftOption, String rightOption, String[] menuOptions) {
  11.         this.leftOption = leftOption;
  12.         this.rightOption = rightOption;
  13.         this.menuOptions = menuOptions;
  14.     }
  15.     public void drawInactiveMenu(GameCanvas canvas, Graphics g) {
  16.         Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
  17.         int fontHeight = font.getHeight();
  18.         int width = canvas.getWidth();
  19.         int height = canvas.getHeight();
  20.         g.setColor(0xcccccc); 
  21.         g.fillRect(0,height-fontHeight-2 * padding, width,height);     
  22.         g.setFont(font);
  23.         g.setColor(0x000000);
  24.         g.drawString(leftOption, padding, height - padding, Graphics.LEFT | Graphics.BOTTOM);
  25.         g.drawString(rightOption, width - padding, height - padding, Graphics.RIGHT | Graphics.BOTTOM);
  26.         canvas.flushGraphics();
  27.     } 
  28.     public void drawActiveMenu(GameCanvas canvas, Graphics g, int selectedOptionIndex) { 
  29.         Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
  30.         int fontHeight = font.getHeight();
  31.         int width = canvas.getWidth();
  32.         int height = canvas.getHeight();
  33.         g.setColor(0xcccccc);
  34.         g.fillRect(0, height - fontHeight - 2 * padding, width, height);
  35.         // draw default menu bar options
  36.         g.setFont(font);
  37.         g.setColor(0x000000);  
  38.         g.drawString(cancelOption, width - padding, height - padding, Graphics.RIGHT | Graphics.BOTTOM);
  39.         canvas.flushGraphics();
  40.         
  41.         if (menuOptions != null) {
  42.             int menuMaxWidth = 0;
  43.             int menuMaxHeight = 0;
  44.             int currentWidth = 0;
  45.             for (int i = 0; i < menuOptions.length; i++) {
  46.                 currentWidth = font.stringWidth(menuOptions[i]);
  47.                 if (currentWidth > menuMaxWidth) {
  48.                     menuMaxWidth = currentWidth; 
  49.                 }
  50.                 menuMaxHeight += fontHeight + padding; 
  51.             } 
  52.             menuMaxWidth += 2 * padding; 
  53.             g.setColor(0xcccccc);
  54.             g.fillRect(0, // x
  55.                        height - fontHeight - 2 * padding - menuMaxHeight, 
  56.                        menuMaxWidth,
  57.                        menuMaxHeight);  
  58.             g.setFont(font);
  59.             int menuOptionX = padding;
  60.             int menuOptionY = height - fontHeight - 2 * padding - menuMaxHeight + padding;
  61.             for (int i = 0; i < menuOptions.length; i++) {
  62.                 if (i != selectedOptionIndex) {
  63.                     g.setColor(0x000000);
  64.                 } else { 
  65.                     g.setColor(0x0000ff); 
  66.                 }
  67.                 g.drawString(menuOptions[i], menuOptionX, menuOptionY, Graphics.LEFT | Graphics.TOP);
  68.                 menuOptionY += padding + fontHeight;
  69.             }
  70.             canvas.flushGraphics();
  71.         }
  72.     }