📄 gameoptions.java
字号:
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void loadResource() {
try {
createButton();
createBackground();
createMenuButton();
createTitle();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void input(){
int keyState = getKeyStates();
String cmd=null;
if((keyState & LEFT_PRESSED) != 0){
cmd="确定";
Navigator.flow(cmd);
}else if((keyState & RIGHT_PRESSED) != 0){
cmd="返回";
Navigator.flow(cmd);
}else if((keyState & UP_PRESSED) != 0){
m_currentMenuButtonIndex--;
if(m_currentMenuButtonIndex<=0){
m_currentMenuButtonIndex=0;
}
}else if((keyState & DOWN_PRESSED) != 0){
m_currentMenuButtonIndex++;
if(m_currentMenuButtonIndex>=2){
m_currentMenuButtonIndex=1;
}
}
}
protected void keyPressed(int keyCode){
// System.out.println(keyCode);
String cmd=null;
if(DrawTools.KEY_CODE_LSK==keyCode||DrawTools.KEY_CODE_SELECT==keyCode){
if(m_currentMenuButtonIndex==0){
cmd="readrecord";
}else if(m_currentMenuButtonIndex==1){
cmd="backmenu";
}
Navigator.flow(cmd);
}
}
private static void releaseResources(){
try {
if(m_layerManager==null){
return;
}
releaseTitle();
releaseButton();
releaseBackground();
releaseMenuButton();
for(int i = 0; i < m_layerManager.getSize(); i++){
Layer layer = m_layerManager.getLayerAt(i);
if(null!=layer){
m_layerManager.remove(layer);
layer=null;
}
}
m_layerManager=null;
instance=null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void stop(){
try {
m_threadAlive=false;
releaseResources();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void pause(){
m_threadAlive=true;
}
public void run() {
if(!m_threadAlive){
return;
}
Graphics g = getGraphics();
g.setColor(255, 255, 255); //绘图色为白色 清屏
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 0); //绘图色变成黑色,用来画字符串
input();
if(null!=m_layerManager){
m_layerManager.paint(g, 0, 0);
}
DrawTools.displayMenuButton(
m_menuButtonImgSprite,
m_menuWordImgSprite,
null,
MENU_BUTTON_X,
MENU_BUTTON_Y,
-1,
chosenWordIndex,
unchosenWordIndex,
m_currentMenuButtonIndex,
MENU_BUTTON_COUNTS);
if(null!=m_title){
DrawTools.XDrawImage(g,m_title,GAME_FAILED_X,GAME_FAILED_Y,0,0,GAME_FAILED_WIDTH,
GAME_FAILED_HEIGHT);
}
flushGraphics();
}
}
//menu handling class
public class GameOptions extends GameCanvas{
private static GameOptions instance;
private static LayerManager m_layerManager;
private static Graphics m_graphics;
private static boolean m_threadAlive;
//图片资源
private static Image m_backgroundImg; //背景
private static Sprite m_backgroundImgSprite;
private static Image m_panel; //上下PANEL
private static Sprite m_panelSprite;
private static Image m_menuButtonImg; //menu_button.png
private static Image m_menuWordImg; //
private static Sprite[] m_menuWordImgSprite;
private static Sprite[] m_menuButtonImgSprite;
private static Sprite m_menuBackgroundSprite;
private static Image m_bgTitleImage;
//button sprite
private static Sprite[] m_buttonSprite;
private static Image m_buttonImage;
private int m_currentMenuButtonIndex;
//index
private final static int KEY_CODE_LSK=-6;
private final static int KEY_CODE_RSK=-7;
private final static int BUTTON_INDEX_CONFIRM = 0;
private final static int BUTTON_INDEX_MENU = 1;
private final static int BUTTON_INDEX_BACK = 2;
private final static int BUTTON_INDEX_CONTINUE = 3;
private final static int BUTTON_INDEX_EXIT = 4;
private final static int MENU_BUTTON_INDEX_CHOSEN=0;
private final static int MENU_BUTTON_INDEX_UNCHOSEN=1;
//button menu word
private final static int MENU_BUTTON_WORD_INDEX_POP_CHOSEN=0;
private final static int MENU_BUTTON_WORD_INDEX_POP_UNCHOSEN=1;
private final static int MENU_BUTTON_WORD_INDEX_WAR_CHOSEN=2;
private final static int MENU_BUTTON_WORD_INDEX_WAR_UNCHOSEN=3;
private final static int MENU_BUTTON_WORD_INDEX_MUSIC_CHOSEN=4;
private final static int MENU_BUTTON_WORD_INDEX_NUSIC_UNCHOSEN=5;
private final static int MENU_BUTTON_WORD_INDEX_TRAINING_CHOSEN=6;
private final static int MENU_BUTTON_WORD_INDEX_TRAINING_UNCHOSEN=7;
//position constant
private final static int LEFT_SOFTKEY_X = 16;
private final static int LEFT_SOFTKEY_Y = 303;
private final static int RIGHT_SOFTKEY_X = 185;
private final static int RIGHT_SOFTKEY_Y = 303;
private final static int MENU_RECT_X =106;
private final static int MENU_RECT_Y =180;
private final static int MENU_BUTTON_X=112;
private final static int MENU_BUTTON_Y=186;
private final static int PANEL_X=0;
private final static int PANEL_Y=301;
private final static int MENU_BUTTON_GAP=4;//二个MENU BUTTON之间的高度
//object width/height
private final static int BACKGROUND_WIDTH=240;
private final static int BACKGROUND_HEIGHT=320;
private final static int PANEL_WIDTH=240;
private final static int PANEL_HEIGHT=20;
private final static int BUTTON_IMAGE_WIDTH=41;
private final static int BUTTON_IMAGE_HEIGHT=17;
private final static int MENU_RECT_WIDTH=116;
private final static int MENU_RECT_HEIGHT=106;
private final static int MENU_BUTTON_WIDTH=106;
private final static int MENU_BUTTON_HEIGHT=20;
private final static int MENU_WORD_WIDTH=60;
private final static int MENU_WORD_HEIGHT=20;
//object counts
private final static int PANEL_COUNTS=2;
private final static int BUTTON_SPRITE_COUNTS=2;
private final static int MENU_BUTTON_COUNTS=4;
static int[] chosenWordIndex = {
DrawTools.MENU_BUTTON_WORD_INDEX_POP_CHOSEN,
DrawTools.MENU_BUTTON_WORD_INDEX_WAR_CHOSEN,
DrawTools.MENU_BUTTON_WORD_INDEX_TRAINING_CHOSEN,
DrawTools.MENU_BUTTON_WORD_INDEX_ABOUTGAME_CHOSEN
};
static int[] unchosenWordIndex = {
DrawTools.MENU_BUTTON_WORD_INDEX_POP_UNCHOSEN,
DrawTools.MENU_BUTTON_WORD_INDEX_WAR_UNCHOSEN,
DrawTools.MENU_BUTTON_WORD_INDEX_TRAINING_UNCHOSEN,
DrawTools.MENU_BUTTON_WORD_INDEX_ABOUTGAME_UNCHOSEN
};
synchronized public static GameOptions getInstance() {
if (instance == null)
instance = new GameOptions();
return instance;
}
private static void releaseBackground() {
try {
m_backgroundImg = null;
m_panel=null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void createBackground() {
try {
Graphics g=getGraphics();
m_backgroundImg = Image.createImage("/tank/map_res/mainscreen.png");
m_panel=Image.createImage("/tank/map_res/bottom.png");
m_backgroundImgSprite = new Sprite(m_backgroundImg, BACKGROUND_WIDTH,
BACKGROUND_HEIGHT);
m_layerManager.insert(m_backgroundImgSprite, 0);
m_backgroundImgSprite.setRefPixelPosition(0,0);
m_panelSprite=new Sprite(m_panel,PANEL_WIDTH,PANEL_HEIGHT);
m_layerManager.insert(m_panelSprite, 0);
m_panelSprite.setFrame(1);
m_panelSprite.setRefPixelPosition(PANEL_X,PANEL_Y);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private static void releaseButton(){
try {
m_buttonImage = null;
for (int i = 0; i < BUTTON_SPRITE_COUNTS; i++) {
if (null != m_buttonSprite && null != m_buttonSprite[i]) {
m_layerManager.remove(m_buttonSprite[i]);
m_buttonSprite[i] = null;
}
}
m_buttonSprite = null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void createButton() {
try {
m_buttonImage = Image.createImage("/tank/map_res/factory_bottom_word.png");
//button,确定/返回
m_buttonSprite = new Sprite[BUTTON_SPRITE_COUNTS];
for (int i = 0; i < BUTTON_SPRITE_COUNTS; i++) {
m_buttonSprite[i] = new Sprite(m_buttonImage, BUTTON_IMAGE_WIDTH,
BUTTON_IMAGE_HEIGHT);
m_layerManager.insert(m_buttonSprite[i], 0);
}
int []buttonIndex={DrawTools.BUTTON_INDEX_CONFIRM,DrawTools.BUTTON_INDEX_BACK};
DrawTools.displayButton(m_buttonSprite,2,buttonIndex);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private static void releaseResources(){
try {
if(m_layerManager==null){
return;
}
m_graphics=null;
releaseBackground();
releaseButton();
m_menuButtonImg=null;
m_menuWordImg=null;
for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
if (null != m_menuButtonImgSprite && null != m_menuButtonImgSprite[i]) {
m_layerManager.remove(m_menuButtonImgSprite[i]);
m_menuButtonImgSprite[i] = null;
}
}
m_menuButtonImgSprite=null;
for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
if (null != m_menuWordImgSprite && null != m_menuWordImgSprite[i]) {
m_layerManager.remove(m_menuWordImgSprite[i]);
m_menuWordImgSprite[i] = null;
}
}
m_menuWordImgSprite=null;
for(int i = 0; i < m_layerManager.getSize(); i++){
Layer layer = m_layerManager.getLayerAt(i);
if(null!=layer){
m_layerManager.remove(layer);
layer=null;
}
}
m_layerManager=null;
instance=null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void loadResource() {
try {
m_layerManager = new LayerManager();
m_graphics=getGraphics();
setFullScreenMode(true);
/**
* 1.play bg.midi when entering into the game options
* 2.play bg.midi when returning from battle;
*/
if(null== GameLogic.m_player){
GameLogic.m_player=new LPAudioPlayer("/tank/bg.mid","audio/midi");
if(GameLogic.m_soundOn==true){
GameLogic.m_player.threadPlay();
}
}
m_menuButtonImg = Image.createImage("/tank/map_res/menu_button.png");
m_menuWordImg = Image.createImage("/tank/map_res/menu_word.png");
createBackground();//top/bottom panel/background
createButton();
//green background for menu button
Image menuBKImage=Image.createImage(MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
m_menuBackgroundSprite=new Sprite(menuBKImage,MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
m_menuBackgroundSprite.setRefPixelPosition(MENU_RECT_X,MENU_RECT_Y);
m_layerManager.insert(m_menuBackgroundSprite,0);
Graphics g=menuBKImage.getGraphics();
g.setColor(2,56,0);
g.fillRect(0,0,MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
g=null;
menuBKImage=null;
//MENU BUTTON
m_menuButtonImgSprite = new Sprite[MENU_BUTTON_COUNTS];
for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
m_menuButtonImgSprite[i] = new Sprite(m_menuButtonImg,
MENU_BUTTON_WIDTH,
MENU_BUTTON_HEIGHT);
m_layerManager.insert(m_menuButtonImgSprite[i], 0);
}
//menu button word
m_menuWordImgSprite=new Sprite[MENU_BUTTON_COUNTS];
for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
m_menuWordImgSprite[i]=new Sprite(m_menuWordImg,MENU_WORD_WIDTH,MENU_WORD_HEIGHT);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -