📄 menucanvas.java
字号:
package myGame.gui;
import java.util.Calendar;
import java.util.Date;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.m3g.Graphics3D;
import myGame.gui.menu.BinaryPageItem;
import myGame.gui.menu.DefaultMenuPainter;
import myGame.gui.menu.ItemAction;
import myGame.gui.menu.Menu;
import myGame.gui.menu.MenuListener;
import myGame.gui.menu.MenuPage;
import myGame.gui.menu.PageItem;
import myGame.gui.popup.Popup;
import myGame.main.Audio;
import myGame.main.GameRecord;
import myGame.main.MazeCanvas;
import myGame.main.MyGame;
import myGame.main.Resources;
import myGame.main.RmsFacade;
/**
* The <code>MenuCanvas</code> is the handler of the MyGame menu. There is
* only one menu per game, thus the singleton pattern.
*
* @see myGame.gui.menu.Menu
* @author YuBingxing
*/
public class MenuCanvas extends PopupCanvas implements MenuListener,
ItemAction, CommandListener {
/** Item property key containing help text */
protected static final int ITEM_HELP = 0;
/** Action key for starting a local game */
protected static final int ACTION_LOCAL_START = 1;
/** Action key for resuming a local game */
protected static final int ACTION_LOCAL_RESUME = 2;
/** Action key for top view a local game */
protected static final int ACTION_TOP_VIEW = 3;
/** Action key for quitting midlet */
protected static final int ACTION_QUIT = 4;
/** Action key for showing specific score */
protected static final int ACTION_SCORE = 5;
/** Action key for turning audio on/off */
protected static final int ACTION_AUDIO = 100;
/** Action key for turning easy on/off */
protected static final int ACTION_EASY = 101;
/** Action key for turning normal on/off */
protected static final int ACTION_NORMAL = 102;
/** Action key for turning hard on/off */
protected static final int ACTION_HARD = 103;
/** Action key for turning veryhard on/off */
protected static final int ACTION_VERYHARD = 104;
/** Action key for turning 60s on/off */
protected static final int ACTION_60 = 105;
/** Action key for turning 120s on/off */
protected static final int ACTION_120 = 106;
/** Action key for turning 300s on/off */
protected static final int ACTION_300 = 107;
/** Action key for turning 600s on/off */
protected static final int ACTION_600 = 108;
/** Action key for turning nolimit on/off */
protected static final int ACTION_NOLIMIT = 109;
/** Action key for showing about box */
protected static final int ACTION_ABOUT = 200;
protected static final int ACTION_BGMUSIC1 = 201;
protected static final int ACTION_BGMUSIC2 = 202;
protected static final int ACTION_BGMUSIC3 = 203;
/** Softbutton back command */
protected static final Command CMD_BACK = new Command(Resources
.getString(Resources.TXT_C_BACK), Command.BACK, 1);
/** Softbutton help command */
protected static final Command CMD_HELP = new Command(Resources
.getString(Resources.TXT_C_HELP), Command.ITEM, 1);
/** The menu instance */
protected static Menu m_menu;
/** The main menu page */
public static MenuPage mainPage;
/** Softbuttons of the backgammon menu canvas */
protected SoftButtonControl m_softButtons;
/** The background image */
protected Image m_background;
/** Special page with scores */
protected MenuPage m_scorePage;
/** The main continue page item */
protected PageItem continueItem;
/** The graphics3DpropertiesItem page item */
protected PageItem graphics3DpropertiesItem;
/** The top view page item */
protected PageItem topviewItem;
/** The scores item */
protected PageItem m_scoresItem;
/** Difficulty setting, easy, item */
protected PersistenceFlagItem easyItem;
/** Difficulty setting, normal, item */
protected PersistenceFlagItem normalItem;
/** Difficulty setting, hard, item */
protected PersistenceFlagItem hardItem;
/** Difficulty setting, veryhard, item */
protected PersistenceFlagItem veryhardItem;
/** Time Limit setting, 60second, item */
protected PersistenceFlagItem s60Item;
/** Time Limit setting, 120second, item */
protected PersistenceFlagItem s120Item;
/** Time Limit setting, 300second, item */
protected PersistenceFlagItem s300Item;
/** Time Limit setting, 600second, item */
protected PersistenceFlagItem s600Item;
/** Time Limit setting, nolimit, item */
protected PersistenceFlagItem nolimitItem;
protected PersistenceFlagItem bgmusic1;
protected PersistenceFlagItem bgmusic2;
protected PersistenceFlagItem bgmusic3;
protected static Hashtable properties = Graphics3D.getProperties();
/** Singleton instance */
protected static MenuCanvas m_inst = null;
public static int bgMusic = Audio.BGMUSIC1;
/**
* Returns the singleton instance.
*
* @return The singleton instance.
*/
public static MenuCanvas getInstance() {
if (m_inst == null) {
m_inst = new MenuCanvas();
}
return m_inst;
}
/**
* Creates the menu and initiates the gui controls
*/
protected MenuCanvas() {
Resources.initGraphics3Dproperties();
m_background = Resources.getImage(Resources.IMG_BACKGROUND);
m_softButtons = new SoftButtonControl();
// Create menu
mainPage = new MenuPage(Resources
.getChars(Resources.TXT_T_MYMAZE3DGAME), null);
m_menu = new Menu(mainPage, this, new MyGameMenuPainter(getWidth()));
// Menu titles
MenuPage graphics3DpropertiesPage = new MenuPage(Resources
.getChars(Resources.TXT_T_GARPHICS3DPROPERTIES), null);
MenuPage setupPage = new MenuPage(Resources
.getChars(Resources.TXT_T_SETTINGS), null);
m_scorePage = new MenuPage(Resources.getChars(Resources.TXT_T_SCORES),
null);
MenuPage difficulyPage = new MenuPage(Resources
.getChars(Resources.TXT_T_DIFFICULTY), null);
MenuPage timelimitPage = new MenuPage(Resources
.getChars(Resources.TXT_T_TIMELIMIT), null);
MenuPage selectBgMusicPage = new MenuPage(Resources
.getChars(Resources.TXT_T_TIMELIMIT), null);
// Menu main page
// new game
PageItem newgameItem = new PageItem(Resources
.getChars(Resources.TXT_I_NEWGAME), null, this, null,
ACTION_LOCAL_START);
newgameItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_NEWGAME));
// continue game
continueItem = new PageItem(Resources
.getChars(Resources.TXT_I_CONTINUE), null, this, null,
ACTION_LOCAL_RESUME);
continueItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_CONTINUE));
// graphics3Dproperties show
graphics3DpropertiesItem = new PageItem(Resources
.getChars(Resources.TXT_I_GARPHICS3DPROPERTIES), null, null,
graphics3DpropertiesPage);
graphics3DpropertiesItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_GRAPHICS3DPROPERTIES));
// top view
topviewItem = new PageItem(Resources.getChars(Resources.TXT_I_TOPVIEW),
null, this, null, ACTION_TOP_VIEW);
topviewItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_TOPVIEW));
// scores item
m_scoresItem = new PageItem(Resources
.getChars(Resources.TXT_I_BT_SCORES), null, this, m_scorePage);
m_scoresItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_SCORES));
// settings item
PageItem setupItem = new PageItem(Resources
.getChars(Resources.TXT_I_SETTINGS), null, null, setupPage);
setupItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_SETTINGS));
PageItem aboutItem = new PageItem(Resources
.getChars(Resources.TXT_I_ABOUT), null, this, null,
ACTION_ABOUT);
aboutItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_ABOUT));
mainPage.addItem(newgameItem);
mainPage.addItem(continueItem);
mainPage.addItem(graphics3DpropertiesItem);
mainPage.addItem(topviewItem);
mainPage.addItem(m_scoresItem);
mainPage.addItem(setupItem);
mainPage.addItem(aboutItem);
mainPage.addItem(new PageItem(Resources.getChars(Resources.TXT_I_EXIT),
null, this, null, ACTION_QUIT));
Vector keys = new Vector();
int i = 0;
for (Enumeration elements = properties.keys(); elements
.hasMoreElements();) {
keys.addElement(elements.nextElement());
}
PageItem[] graphics3DpropertiesItems = new PageItem[keys.size()];
for (i = 0; i < keys.size(); i++) {
graphics3DpropertiesItems[i] = new PageItem((keys.elementAt(i)
+ " = " + properties.get(keys.elementAt(i))).toCharArray(),
null, this, null);
graphics3DpropertiesItems[i].setProperty(ITEM_HELP,
Resources.graphics3Dproperties.get(keys.elementAt(i)));
graphics3DpropertiesPage.addItem(graphics3DpropertiesItems[i]);
}
// Difficulty page
easyItem = new PersistenceFlagItem(MyGame.EASY_OFF, Resources
.getChars(Resources.TXT_I_S_D_EASY), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_EASY);
normalItem = new PersistenceFlagItem(MyGame.NORMAL_OFF, Resources
.getChars(Resources.TXT_I_S_D_NORMAL), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_NORMAL);
hardItem = new PersistenceFlagItem(MyGame.HARD_OFF, Resources
.getChars(Resources.TXT_I_S_D_HARD), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_HARD);
veryhardItem = new PersistenceFlagItem(MyGame.VERYHARD_OFF, Resources
.getChars(Resources.TXT_I_S_D_VERYHARD), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_VERYHARD);
difficulyPage.addItem(easyItem);
difficulyPage.addItem(normalItem);
difficulyPage.addItem(hardItem);
difficulyPage.addItem(veryhardItem);
// Timelimit page
s60Item = new PersistenceFlagItem(MyGame.S60_OFF, Resources
.getChars(Resources.TXT_I_S_T_60), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_60);
s120Item = new PersistenceFlagItem(MyGame.S120_OFF, Resources
.getChars(Resources.TXT_I_S_T_120), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_120);
s300Item = new PersistenceFlagItem(MyGame.S300_OFF, Resources
.getChars(Resources.TXT_I_S_T_300), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_300);
s600Item = new PersistenceFlagItem(MyGame.S600_OFF, Resources
.getChars(Resources.TXT_I_S_T_600), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_600);
nolimitItem = new PersistenceFlagItem(MyGame.NOLIMIT_OFF, Resources
.getChars(Resources.TXT_I_S_T_NOLIMIT), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_NOLIMIT);
timelimitPage.addItem(s60Item);
timelimitPage.addItem(s120Item);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -