📄 menuscreen.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 + -