📄 menucanvas.java
字号:
timelimitPage.addItem(s300Item);
timelimitPage.addItem(s600Item);
timelimitPage.addItem(nolimitItem);
// Background Music Select Page
bgmusic1 = new PersistenceFlagItem(MyGame.BGMUSIC1, Resources
.getChars(Resources.TXT_I_S_BGMUSIC1), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_BGMUSIC1);
bgmusic2 = new PersistenceFlagItem(MyGame.BGMUSIC2, Resources
.getChars(Resources.TXT_I_S_BGMUSIC2), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_BGMUSIC2);
bgmusic3 = new PersistenceFlagItem(MyGame.BGMUSIC3, Resources
.getChars(Resources.TXT_I_S_BGMUSIC3), Resources
.getImage(Resources.IMG_ENABLED), Resources
.getImage(Resources.IMG_DISABLED), ACTION_BGMUSIC3);
selectBgMusicPage.addItem(bgmusic1);
selectBgMusicPage.addItem(bgmusic2);
selectBgMusicPage.addItem(bgmusic3);
PersistenceFlagItem audioItem = new PersistenceFlagItem(
MyGame.AUDIO_OFF, Resources.getChars(Resources.TXT_I_S_AUDIO),
Resources.getImage(Resources.IMG_AUDIO_OFF), Resources
.getImage(Resources.IMG_AUDIO_ON), ACTION_AUDIO);
audioItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_S_AUDIO));
PageItem bgmusicItem = new PageItem(Resources
.getChars(Resources.TXT_I_S_BGMUSICSELECT), null, null,
selectBgMusicPage);
bgmusicItem.setLayout(PageItem.LAYOUT_ALIGN_RIGHT);
bgmusicItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_S_BGMUSIC));
PageItem difficultyItem = new PageItem(Resources
.getChars(Resources.TXT_I_S_DIFFICULTY), null, null,
difficulyPage);
difficultyItem.setLayout(PageItem.LAYOUT_ALIGN_RIGHT);
difficultyItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_S_DIFFICULTY));
PageItem timelimitItem = new PageItem(Resources
.getChars(Resources.TXT_I_S_TIMELIMIT), null, null,
timelimitPage);
timelimitItem.setLayout(PageItem.LAYOUT_ALIGN_RIGHT);
timelimitItem.setProperty(ITEM_HELP, Resources
.getChars(Resources.TXT_H_S_TIMELIMIT));
setupPage.addItem(audioItem);
setupPage.addItem(bgmusicItem);
setupPage.addItem(difficultyItem);
setupPage.addItem(timelimitItem);
setFullScreenMode(true);
// Initiate softbuttons
m_softButtons.init(this, Font.getFont(Font.FACE_PROPORTIONAL,
Font.STYLE_BOLD, Font.SIZE_SMALL), CMD_BACK, CMD_HELP);
m_softButtons.setCommandListener(this);
m_softButtons.enable(CMD_HELP, false);
// Setup menu
int menuPadding = 16;
m_menu.setLocation(0, menuPadding);
m_menu.setDimensions(getWidth(), getHeight() - menuPadding * 2);
m_menu.setFrameData(10, 20);
m_menu.setListener(this);
m_menu.start();
}
/**
* Initializes the states of items and starts the muzak, called on an
* already initialized menu when it is focused again.
*/
public void initShow() {
continueItem.setEnabled(MyGame.hasSavedLocalGame());
topviewItem.setEnabled(MyGame.gameStarted);
m_scoresItem.setEnabled(GameRecord.countRecords() > 0);
m_scorePage.removeAllItems();
Vector recs = GameRecord.getAllRecords();
// for (int i = 0; i < recs.size(); i++) {
// GameRecord rec = (GameRecord) recs.elementAt(i);
// if (rec.getGameCount() > 0) {
// m_scorePage.addItem(new GameRecordPageItem(rec));
// }
// }
PageItem selItem = m_menu.getSelectedItem();
if (selItem != null) {
Object helpTxt = selItem.getProperty(ITEM_HELP);
m_softButtons.enable(CMD_HELP, helpTxt != null);
}
// bgMusic = MyGame.getInt(MyGame.BGMUSIC_SET);
System.out.println(bgMusic);
Audio.playSound(bgMusic);
}
/**
* Paints the menu, the possible popup, and the softbuttons.
*
* @param g
* The graphics context to draw on.
*/
// int clip_Y = 50;
// static int time_count = 0;
protected void paint(Graphics g) {
g.setColor(0x888833);
g.fillRect(0, 0, getWidth(), getHeight());
// 绘制菜单背景
// new Timer().schedule(new TimerTask(){
// public void run() {
// if(time_count++ > 5){
// time_count = 0;
// if(clip_Y < -50)
// clip_Y = 50;
// clip_Y -= 5;
// }
// repaint();
// }
// }, 100, 100);
// g.setClip(0, 40, getWidth(), 230);
// g.drawImage(m_background, getWidth() / 2, getHeight() / 2 + clip_Y,
// Graphics.VCENTER | Graphics.HCENTER);
g.drawImage(m_background, getWidth() / 2, getHeight() / 2,
Graphics.VCENTER | Graphics.HCENTER);
g.setClip(0, 0, getWidth(), getHeight());
m_menu.paint(g);
m_softButtons.paint(g);
if (getPopup() != null && getPopup().isActive()) {
getPopup().paint(g);
}
}
/**
* Called when user presses a key. Dispatches the keypress to possible
* popup, menu and softbuttons.
*
* @param keyCode
* The code of the key that is pressed.
*/
protected void keyPressed(int keyCode) {
if (getPopup() != null && getPopup().isActive()) {
getPopup().keyPressed(keyCode, getGameAction(keyCode));
// repaint();
} else {
m_menu.keyPressed(keyCode);
m_softButtons.keyPressed(keyCode);
}
}
public void commandAction(Command c, Displayable d) {
if (c == CMD_BACK) {
m_menu.goBack();
} else if (c == CMD_HELP) {
PageItem item = m_menu.getSelectedItem();
if (item != null) {
char[] helpTxt = (char[]) item.getProperty(ITEM_HELP);
// System.out.println(helpTxt);
if (helpTxt != null) {
MyGame.showPopup(helpTxt, Popup.ALT_OK, 0, 0, 0, null);
}
}
}
}
/**
* ItemAction implementation, called from items in this menu. Instead of
* creating one class per action, we centralize the action behaviour here.
* Each action is identified by its id.
*
* @param page
* The page from which the action was called
* @param item
* The item to which the action belongs
*/
public void itemAction(MenuPage page, PageItem item) {
int id = item.getId();
switch (id) {
case ACTION_LOCAL_START:
MyGame.startNewGame();
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
break;
case ACTION_LOCAL_RESUME:
MyGame.resumeSavedLocalGame();
break;
case ACTION_TOP_VIEW:
MyGame.topView();
break;
case ACTION_QUIT:
MyGame.shutdown();
break;
case ACTION_SCORE:
GameRecordPageItem grItem = (GameRecordPageItem) item;
// String str = new String(grItem.getOpponentNameChars()) + "\n\n"
// + Resources.getString(Resources.TXT_SCORE_PLAYER) + ": "
// + new String(grItem.getPlayerScoreChars()) + "\n"
// + Resources.getString(Resources.TXT_SCORE_OPPONENT) + ": "
// + new String(grItem.getOpponentScoreChars()) + "\n"
// + Resources.getString(Resources.TXT_SCORE_GAMES) + ": "
// + new String(grItem.getGamesChars()) + "\n"
// + Resources.getString(Resources.TXT_SCORE_DATE) + ": "
// + new String(grItem.getLastDateChars()) + "\n\n";
// char[] text = str.toCharArray();
// MyGame.showPopup(text, Popup.ALT_OK, 0, 0, 0, null);
break;
case ACTION_AUDIO:
if (RmsFacade.getBoolean(MyGame.AUDIO_OFF)) {
Audio.stopSound(Audio.MUSIC);
} else {
Audio.playSound(Audio.MUSIC);
}
break;
case ACTION_ABOUT:
MyGame.showPopup(Resources.getChars(Resources.TXT_ABOUT),
Popup.ALT_OK, 0, 0, 0, null);
break;
case ACTION_EASY: {
MazeCanvas.corridorCount = 5;
MazeCanvas.MAZE_SIDE_LENGTH = 250;
RmsFacade.setInt(MyGame.DIFFICULT_SET, MazeCanvas.corridorCount);
easyItem.setBoolean(true);
normalItem.setBoolean(false);
hardItem.setBoolean(false);
veryhardItem.setBoolean(false);
easyItem.setImage(Resources.getImage(Resources.IMG_ENABLED));
normalItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
hardItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
veryhardItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
}
break;
case ACTION_NORMAL: {
MazeCanvas.corridorCount = 10;
MazeCanvas.MAZE_SIDE_LENGTH = 500;
MazeCanvas.multiple = 12;
RmsFacade.setInt(MyGame.DIFFICULT_SET, MazeCanvas.corridorCount);
easyItem.setBoolean(false);
normalItem.setBoolean(true);
hardItem.setBoolean(false);
veryhardItem.setBoolean(false);
easyItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
normalItem.setImage(Resources.getImage(Resources.IMG_ENABLED));
hardItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
veryhardItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
}
break;
case ACTION_HARD: {
MazeCanvas.corridorCount = 14;
MazeCanvas.MAZE_SIDE_LENGTH = 700;
MazeCanvas.multiple = 16;
RmsFacade.setInt(MyGame.DIFFICULT_SET, MazeCanvas.corridorCount);
easyItem.setBoolean(false);
normalItem.setBoolean(false);
hardItem.setBoolean(true);
veryhardItem.setBoolean(false);
easyItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
normalItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
hardItem.setImage(Resources.getImage(Resources.IMG_ENABLED));
veryhardItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
}
break;
case ACTION_VERYHARD: {
MazeCanvas.corridorCount = 18;
MazeCanvas.MAZE_SIDE_LENGTH = 900;
MazeCanvas.multiple = 20;
RmsFacade.setInt(MyGame.DIFFICULT_SET, MazeCanvas.corridorCount);
easyItem.setBoolean(false);
normalItem.setBoolean(false);
hardItem.setBoolean(false);
veryhardItem.setBoolean(true);
easyItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
normalItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
hardItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
veryhardItem.setImage(Resources.getImage(Resources.IMG_ENABLED));
}
break;
case ACTION_60: {
MazeCanvas.timeLimit = 60;
RmsFacade.setInt(MyGame.TIMELIMIT_SET, MazeCanvas.timeLimit);
s60Item.setBoolean(true);
s120Item.setBoolean(false);
s300Item.setBoolean(false);
s600Item.setBoolean(false);
nolimitItem.setBoolean(false);
s60Item.setImage(Resources.getImage(Resources.IMG_ENABLED));
s120Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
s300Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
s600Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
nolimitItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
}
break;
case ACTION_120: {
MazeCanvas.timeLimit = 120;
RmsFacade.setInt(MyGame.TIMELIMIT_SET, MazeCanvas.timeLimit);
s60Item.setBoolean(false);
s120Item.setBoolean(true);
s300Item.setBoolean(false);
s600Item.setBoolean(false);
nolimitItem.setBoolean(false);
s60Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
s120Item.setImage(Resources.getImage(Resources.IMG_ENABLED));
s300Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
s600Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
nolimitItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
}
break;
case ACTION_300: {
MazeCanvas.timeLimit = 300;
RmsFacade.setInt(MyGame.TIMELIMIT_SET, MazeCanvas.timeLimit);
s60Item.setBoolean(false);
s120Item.setBoolean(false);
s300Item.setBoolean(true);
s600Item.setBoolean(false);
nolimitItem.setBoolean(false);
s60Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
s120Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
s300Item.setImage(Resources.getImage(Resources.IMG_ENABLED));
s600Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
nolimitItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -