📄 helpscreen.java
字号:
/*
* Created on 2006-5-20
*
*/
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.tools.Tools;
/**
*
* 帮助界面
*/
public class HelpScreen extends ActorCanvas {
private static final byte MAIN_STAGE = 0;
private static final byte GAME_INFO_STAGE = 1;
private static final byte CONTROL_INFO_STAGE = 2;
private static final byte MUSIC_STAGE = 3;
private static final int TEXTBOX_START_X = 10;
private static final int TEXTBOX_START_Y = 25;
private static final int TEXTBOX_WIDTH = ThreadCanvas.SCREEN_WIDTH - 20;
private static final int TEXTBOX_HEIGHT = ThreadCanvas.SCREEN_HEIGHT - 50;
private String stageStringSet[];
private String mainStringSet[];
private String gameInfo;
private String musicStringSet[];
private String leftButton;
private String rightButton;
private int mainStartX;
private int mainStartY;
private int musicStartY;
private byte gameStage;
private byte selectIndex;
private boolean newStage;
// /**
// * 装主界面文字的容器
// */
// private Vector mainVector;
/**
* 装游戏介绍界面文字的容器
*/
private Vector gameInfoVector;
private Vector controlInfoVector;
private byte fontHeight;
private boolean right = true;
/**
* 记录文字上下移动的距离
*/
private int updowns;
//private Vector sb;
private int textHeight;
private int flashArrowDelay;
private int arrowColor;
private int buttonWidth;
private boolean tempMusic;
private int tempVolumn;
// /**
// * 装声音控制界面文字的容器
// */
// private Vector musicVector;
/**
*
*/
public HelpScreen() {
gameStage = MAIN_STAGE;
gameInfo = "在古老的阿可巴拉城里,住着一个美貌的公主。她的美丽远近闻名,同时又心地善良。所以得到了全城人民的喜爱。在城里有个卖地毯的小子:阿辛,他虽然是处在社会底层,并且是个穷光蛋。但是他也被公主的美貌所打动,深深的爱着公主。公主也有个调皮的弟弟:法里赫,这个小子虽然出生在皇家,但是却为人豪迈,完全没有王子的架子。在一次偶然的出行中,结识了阿辛,也就是因为他,阿辛才见到了公主的美貌,并为之打动。阿可巴拉城的卫队长:杜阿是个坚强的男人,拥有钢铁般的意志与身体,并为人公正无私,他一直在恪尽职守的完成着自己的使命。魔术师:赛西斯,拥有最强大的魔法的宫廷魔法师,也爱慕着公主,但为人小气,心胸狭窄。有一天,魔神卡巴特突然出现在阿可巴拉城,并且伪装成一个卖鹦鹉的人混进宫中,劫走了美丽的公主,并要娶她为妻。于是上述的4人为了救出公主而展开了冒险。当然最终公主是被救回,并且魔王卡巴特也被封印在了神灯里。";
stageStringSet = new String[] { "==游 戏 帮 助==", "==游 戏 简 介==",
"==操 作 说 明==", "==声 音 控 制==" };
mainStringSet = new String[] { "游 戏 说 明"};//, "声 音 控 制" };
musicStringSet = new String[] { "音 乐", "音 量", "开", "关" };
mainStartX = ThreadCanvas.SCREEN_WIDTH / 2
- Font.getDefaultFont().stringWidth(mainStringSet[0]) / 2;
mainStartY = ThreadCanvas.SCREEN_HEIGHT / 2 - fontHeight - 20;
musicStartY = mainStartY;
gameInfoVector = new Vector();
Tools.divideString(gameInfoVector, gameInfo, TEXTBOX_WIDTH);
controlInfoVector = new Vector();
Tools.divideString(controlInfoVector, "方向键控制角色移动", TEXTBOX_WIDTH);
Tools.divideString(controlInfoVector, "2/上,4/左,8/下,6/右", TEXTBOX_WIDTH);
Tools.divideString(controlInfoVector, "0键切换普通子弹发射/终止", TEXTBOX_WIDTH);
Tools.divideString(controlInfoVector, "1,3键释放大绝招", TEXTBOX_WIDTH);
leftButton = "返回";
rightButton = "确定";
buttonWidth = Font.getDefaultFont().stringWidth(leftButton);
fontHeight = (byte) Font.getDefaultFont().getHeight();
flashArrowDelay = 3;
arrowColor = 0xffffff;
}
/**
* 刷新
*
*/
public void cycle() {
switch (gameStage) {
case MAIN_STAGE:
if (newStage) {
newStage = false;
selectIndex = 0;
}
break;
case GAME_INFO_STAGE:
if (newStage) {
newStage = false;
selectIndex = 0;
updowns = 0;
textHeight = fontHeight * gameInfoVector.size() + 20;
}
break;
case CONTROL_INFO_STAGE:
if (newStage) {
newStage = false;
selectIndex = 0;
updowns = 0;
textHeight = fontHeight * controlInfoVector.size() + 20;
}
break;
case MUSIC_STAGE:
if (newStage) {
newStage = false;
selectIndex = 0;
}
break;
}
flashArrowDelay--;
if (flashArrowDelay <= 0) {
flashArrowDelay = 3;
arrowColor = 0xff0000;
} else {
arrowColor = 0xffffff;
}
}
public void paint(Graphics g) {
g.setColor(0);
g.fillRect(0, 0, ThreadCanvas.SCREEN_WIDTH, ThreadCanvas.SCREEN_HEIGHT);
g.setColor(0xffffff);
g.drawString(stageStringSet[gameStage], 0, 0, 0);
switch (gameStage) {
case MAIN_STAGE:
for (int index = 0; index < mainStringSet.length; index++) {
if (index == selectIndex) {
Tools.drawArtString(g, 0xffffff, 0xe9ff13, 0xe9ff13,
mainStringSet[index], mainStartX, mainStartY
+ index * (fontHeight + 20), 0);
} else {
g.drawString(mainStringSet[index], mainStartX, mainStartY
+ index * (fontHeight + 20), 0);
}
}
g.setColor(0xffffff);
//#if MOT_E398 || MOT_V600 || MOT_L7 || MOT_E2
//# g.drawString(leftButton,0,ThreadCanvas.SCREEN_HEIGHT - fontHeight,0);
//# g.drawString(rightButton,ThreadCanvas.SCREEN_WIDTH - 40,ThreadCanvas.SCREEN_HEIGHT - fontHeight,0);
//#else
g.drawString(leftButton,ThreadCanvas.SCREEN_WIDTH - 40,ThreadCanvas.SCREEN_HEIGHT - fontHeight,0);
g.drawString(rightButton, 0,ThreadCanvas.SCREEN_HEIGHT - fontHeight,0);
//#endif
break;
case GAME_INFO_STAGE:
g.setClip(TEXTBOX_START_X, TEXTBOX_START_Y, TEXTBOX_WIDTH,
TEXTBOX_HEIGHT);
int j = 0;
for (int index = 0; index < gameInfoVector.size(); index++) {
g.drawString((String) gameInfoVector.elementAt(index), TEXTBOX_START_X, TEXTBOX_START_Y + fontHeight * j - updowns, 0);
j++;
}
g.setClip(0, 0, ThreadCanvas.SCREEN_WIDTH,
ThreadCanvas.SCREEN_HEIGHT);
g.setColor(arrowColor);
if (textHeight - updowns > TEXTBOX_HEIGHT) {
Tools.drawArrow(g, ThreadCanvas.SCREEN_WIDTH / 2,
ThreadCanvas.SCREEN_HEIGHT - 14, Tools.ARROW_DOWN);
}
if (updowns > 0) {
Tools.drawArrow(g, ThreadCanvas.SCREEN_WIDTH / 2, 14,
Tools.ARROW_UP);
}
Tools.drawArrow(g, ThreadCanvas.SCREEN_WIDTH - 14,
ThreadCanvas.SCREEN_HEIGHT / 2, Tools.ARROW_RIGHT);
g.setColor(0xffffff);
//#if MOT_E398 || MOT_V600 || MOT_L7 || MOT_E2
//# g.drawString(leftButton,0,ThreadCanvas.SCREEN_HEIGHT - fontHeight,0);
//#else
g.drawString(leftButton,ThreadCanvas.SCREEN_WIDTH - 40,ThreadCanvas.SCREEN_HEIGHT - fontHeight,0);
//#endif
break;
case CONTROL_INFO_STAGE:
g.setClip(TEXTBOX_START_X, TEXTBOX_START_Y, TEXTBOX_WIDTH,
TEXTBOX_HEIGHT);
j = 0;
for (int index = 0; index < controlInfoVector.size(); index++) {
g.drawString((String) controlInfoVector.elementAt(index),
TEXTBOX_START_X, TEXTBOX_START_Y + fontHeight * j
- updowns, 0);
j++;
}
g.setClip(0, 0, ThreadCanvas.SCREEN_WIDTH,
ThreadCanvas.SCREEN_HEIGHT);
g.setColor(arrowColor);
if (textHeight - updowns > TEXTBOX_HEIGHT) {
Tools.drawArrow(g, ThreadCanvas.SCREEN_WIDTH / 2,
ThreadCanvas.SCREEN_HEIGHT - 14, Tools.ARROW_DOWN);
}
if (updowns > 0) {
Tools.drawArrow(g, ThreadCanvas.SCREEN_WIDTH / 2, 14,
Tools.ARROW_UP);
}
Tools.drawArrow(g, 14, ThreadCanvas.SCREEN_HEIGHT / 2,
Tools.ARROW_LEFT);
g.setColor(0xffffff);
//#if MOT_E398 || MOT_V600 || MOT_L7 || MOT_E2
//# g.drawString(leftButton,0,ThreadCanvas.SCREEN_HEIGHT - fontHeight,0);
//#else
g.drawString(leftButton,ThreadCanvas.SCREEN_WIDTH - 40,ThreadCanvas.SCREEN_HEIGHT - fontHeight,0);
//#endif
break;
//#if NOK_7210 || NOK_QD
//#else
case MUSIC_STAGE:
for (int index = 0; index < 2; index++) {
if (index == selectIndex) {
Tools.drawArtString(g, 0xffffff, 0xe9ff13e, 0xe9ff13e,
musicStringSet[index], 25, musicStartY + index
* (fontHeight + 20), 0);
} else {
g.drawString(musicStringSet[index], 25, musicStartY + index
* (fontHeight + 20), 0);
}
}
if (Control.music) {
if (selectIndex == 0) {
Tools.drawArtString(g, 0xffffff, 0xe9ff13e, 0xe9ff13e,
musicStringSet[2], ThreadCanvas.SCREEN_WIDTH - 55,
musicStartY, 0);
} else {
g.drawString(musicStringSet[2],
ThreadCanvas.SCREEN_WIDTH - 55, musicStartY, 0);
}
} else {
if (selectIndex == 0) {
Tools.drawArtString(g, 0xffffff, 0xe9ff13e, 0xe9ff13e,
musicStringSet[3], ThreadCanvas.SCREEN_WIDTH - 55,
musicStartY, 0);
} else {
g.drawString(musicStringSet[3],
ThreadCanvas.SCREEN_WIDTH - 55, musicStartY, 0);
}
}
if (selectIndex == 0) {
g.setColor(0xffffff);
drawTriangle(g, ThreadCanvas.SCREEN_WIDTH - 55, musicStartY
+ fontHeight * 3 / 2 + 20, true);
g.setColor(0xffffff);
drawTriangle(g, ThreadCanvas.SCREEN_WIDTH - 30, musicStartY
+ fontHeight * 3 / 2 + 20, false);
} else {
if (right) {
g.setColor(0xffffff);
drawTriangle(g, ThreadCanvas.SCREEN_WIDTH - 55, musicStartY
+ fontHeight * 3 / 2 + 20, true);
g.setColor(0xff0000);
drawTriangle(g, ThreadCanvas.SCREEN_WIDTH - 30, musicStartY
+ fontHeight * 3 / 2 + 20, false);
} else {
g.setColor(0xff0000);
drawTriangle(g, ThreadCanvas.SCREEN_WIDTH - 55, musicStartY
+ fontHeight * 3 / 2 + 20, true);
g.setColor(0xffffff);
drawTriangle(g, ThreadCanvas.SCREEN_WIDTH - 30, musicStartY
+ fontHeight * 3 / 2 + 20, false);
}
}
g.setColor(0xffffff);
g.drawString(leftButton, 0,
ThreadCanvas.SCREEN_HEIGHT - fontHeight, 0);
g.drawString(rightButton, ThreadCanvas.SCREEN_WIDTH - buttonWidth,
ThreadCanvas.SCREEN_HEIGHT - fontHeight, 0);
break;
//#endif
}
}
/**
* 回收资源
*
*/
public void reCycle() {
System.gc();
}
protected void keyPressed(int keycode) {
switch (keycode) {
case KeyMap.UP:
switch (gameStage) {
case GAME_INFO_STAGE:
case CONTROL_INFO_STAGE:
updowns -= 10;
if (updowns < 0) {
updowns = 0;
}
break;
case MUSIC_STAGE:
selectIndex--;
if (selectIndex < 0) {
selectIndex = 1;
}
break;
}
break;
case KeyMap.DOWN:
switch (gameStage) {
// case MAIN_STAGE:
// selectIndex++;
// if (selectIndex > 1) {
// selectIndex = 0;
// }
// break;
case GAME_INFO_STAGE:
case CONTROL_INFO_STAGE:
updowns += 10;
if (textHeight - updowns < TEXTBOX_HEIGHT) {
updowns = textHeight - TEXTBOX_HEIGHT;
}
break;
case MUSIC_STAGE:
selectIndex++;
if (selectIndex > 1) {
selectIndex = 0;
}
break;
}
break;
case KeyMap.LEFT:
switch (gameStage) {
case MUSIC_STAGE:
if (selectIndex == 1) {
if (right) {
right = false;
} else {
Control.downMusic();
}
}
break;
case CONTROL_INFO_STAGE:
changeStage(GAME_INFO_STAGE);
break;
}
break;
case KeyMap.RIGHT:
switch (gameStage) {
case MUSIC_STAGE:
if (selectIndex == 1) {
if (!right) {
right = true;
} else {
Control.upMusic();
}
}
break;
case GAME_INFO_STAGE:
changeStage(CONTROL_INFO_STAGE);
break;
}
break;
//#if MOT_E398 || MOT_V600 || MOT_L7 || MOT_E2
//# case KeyMap.RIGHT_SOFT:
//#else
case KeyMap.LEFT_SOFT:
//#endif
case KeyMap.FIRE:
switch (gameStage) {
case MAIN_STAGE:
switch (selectIndex) {
case 0:
changeStage(GAME_INFO_STAGE);
break;
case 1:
tempMusic = Control.music;
tempVolumn = Control.musicVolumn;
changeStage(MUSIC_STAGE);
break;
}
break;
}
break;
//#if MOT_E398 || MOT_V600 || MOT_L7 || MOT_E2
//# case KeyMap.LEFT_SOFT:
//#else
case KeyMap.RIGHT_SOFT:
//#endif
switch (gameStage) {
case MAIN_STAGE:
Control.returnOldFocus();
break;
case MUSIC_STAGE:
if (tempMusic != Control.music || tempVolumn != Control.musicVolumn) {
Control.setMusic();
}
changeStage(MAIN_STAGE);
break;
default:
changeStage(MAIN_STAGE);
break;
}
break;
}
}
public void changeStage(byte newStage) {
gameStage = newStage;
this.newStage = true;
}
/**
* draw the triangle for control the music voice
*
* @param posx
* @param posy
* @param flag
*/
public void drawTriangle(Graphics g, int posx, int posy, boolean flag) {
for (int i = 0; i < 8; i++) {
if (flag) {
g.drawLine(posx + i, posy - i, posx + i, posy + i);
} else {
g.drawLine(posx - i, posy - i, posx - i, posy + i);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -