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

📄 menuscreen.java

📁 一款运行于手机的Java游戏神灯传奇源代码
💻 JAVA
字号:
package com.thinkenjoy.feitian.screen;

import java.util.Vector;

import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;

import com.thinkenjoy.control.ActorCanvas;
import com.thinkenjoy.control.Control;
import com.thinkenjoy.control.KeyMap;
import com.thinkenjoy.control.ThreadCanvas;
import com.thinkenjoy.feitian.Enemy;
import com.thinkenjoy.feitian.Player;
import com.thinkenjoy.tools.Tools;
import com.thinkenjoy.feitian.screen.PlayScreen;;

/**
 * 弹出式菜单类
 */
public class MenuScreen extends ActorCanvas {

  /**
   * 菜单前景色
   */
  private static final int FOREGROUND_COLOR = 0xFFFFFF;

  /**
   * 菜单背景色
   */
  private static final int BACKGROUND_COLOR = 0x000000;

  /**
   * 艺术字的前景色
   */
  private static final int TOP_FONT_COLOR = 0xFF0000;

  /**
   * 艺术字的中间色
   */
  private static final int MAIN_FONT_COLOR = 0xFFFFFF;

  /**
   * 艺术字的背景色
   */
  private static final int BOTTOM_FONT_COLOR = 0x0000FF;

  private boolean isScrollEnd;

  private static final short SCROLL_SPEED = 4;

  private static final short MARGIN_UP = 3;

  private static final short MARGIN_DOWN = 3;

  private static final short MARGIN_LEFT = 5;

  private static final short MARGIN_RIGHT = 5;

  private static final short MENUITEM_PADDING_UP = 3;

  /**
   * 菜单卷动的长度
   */
  private int scrollLength;

  private int selectIndex;

  private Vector menuVector;

  private int menuItemWidth;

  private int menuItemHeight;

  public MenuScreen() {
    menuVector = new Vector();
    menuVector.addElement("返 回 游 戏");
    menuVector.addElement("游 戏 帮 助");
    menuVector.addElement("回 主 菜 单");
    menuVector.addElement("离 开 游 戏");
    menuItemWidth = Font.getDefaultFont().stringWidth("返 回 游 戏") + MARGIN_LEFT + MARGIN_RIGHT;
    menuItemHeight = Font.getDefaultFont().getHeight()+ MENUITEM_PADDING_UP;
    isScrollEnd = false;
  }

  public void cycle() {
    if (scrollLength < menuVector.size() * menuItemHeight + MARGIN_UP + MARGIN_DOWN) {
      scrollLength += SCROLL_SPEED;
    }else{
      isScrollEnd = true;
    }
  }

  public void paint(Graphics g) {

    g.setColor(BACKGROUND_COLOR);
    g.fillRect(ThreadCanvas.SCREEN_WIDTH / 2 - menuItemWidth / 2,
        ThreadCanvas.SCREEN_HEIGHT / 2 - menuVector.size()
            * menuItemHeight / 2, menuItemWidth, scrollLength);
    g.setColor(FOREGROUND_COLOR);
    g.drawRect(ThreadCanvas.SCREEN_WIDTH / 2 - menuItemWidth / 2,
        ThreadCanvas.SCREEN_HEIGHT / 2 - menuVector.size()
            * menuItemHeight / 2, menuItemWidth, scrollLength);
    if (isScrollEnd) {
      for (int i = 0; i < menuVector.size(); i++) {
        if (selectIndex == i) {
          Tools.drawArtString(g, MAIN_FONT_COLOR, TOP_FONT_COLOR,
              BOTTOM_FONT_COLOR,
              (String) menuVector.elementAt(i),
              ThreadCanvas.SCREEN_WIDTH / 2 - menuItemWidth / 2 + MARGIN_LEFT,
              ThreadCanvas.SCREEN_HEIGHT / 2 - menuVector.size()
                  * menuItemHeight / 2 + i * menuItemHeight
                  + MARGIN_UP, 0);
        } else {
          g.setColor(MAIN_FONT_COLOR);
          g.drawString((String) menuVector.elementAt(i),
              ThreadCanvas.SCREEN_WIDTH / 2 - menuItemWidth / 2 + MARGIN_LEFT,
              ThreadCanvas.SCREEN_HEIGHT / 2 - menuVector.size()
                  * menuItemHeight / 2 + i * menuItemHeight
                  + MARGIN_DOWN, 0);
        }
      }
    }
  }

  protected void keyPressed(int keycode) {
    switch (keycode) {
    case KeyMap.DOWN:
      selectIndex++;
      if (selectIndex >= menuVector.size()) {
        selectIndex = 0;
      }
      break;
    case KeyMap.UP:
      selectIndex--;
      if (selectIndex < 0) {
        selectIndex = menuVector.size() - 1;
      }
      break;
    //#if MOT_E398 || MOT_V600 || MOT_L7 || MOT_E2
    //# case KeyMap.RIGHT_SOFT:
    //#else
    case KeyMap.LEFT_SOFT:
    //#endif
    case KeyMap.FIRE:
      if (menuVector.elementAt(selectIndex).equals("返 回 游 戏")) {
        if (Control.music) {
          Control.resumeMusic();
        }
        Control.returnOldFocus();
      } else if (menuVector.elementAt(selectIndex).equals("游 戏 帮 助")) {
        Control.show(Control.HELP_STAGE);
      } else if (menuVector.elementAt(selectIndex).equals("回 主 菜 单")) {
        Control.show(Control.TITLE_STAGE);
        Player.playerImageSet = null;
        Player.bombImageSet = null;
        Player.headImageSet = null;
        Enemy.bossImageSet = null;
        PlayScreen.state = 0;
        Control.oldGunLevel = 1;
        Control.oldScore = 0;
        Control.stage = 1;
        PlayScreen.hasPass = false;
        PlayScreen.pass = 0;
      } else if (menuVector.elementAt(selectIndex).equals("回 主 画 面")) {

      } else if (menuVector.elementAt(selectIndex).equals("离 开 游 戏")) {
        Control.te.terminateProgram();
      }
    }
  }

  public void reCycle() {
    menuVector = null;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -