⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menucanvas.java

📁 J2ME 3D 第一人称射击迷宫类手机游戏源码。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		}
			break;
		case ACTION_600: {
			MazeCanvas.timeLimit = 600;
			RmsFacade.setInt(MyGame.TIMELIMIT_SET, MazeCanvas.timeLimit);
			s60Item.setBoolean(false);
			s120Item.setBoolean(false);
			s300Item.setBoolean(false);
			s600Item.setBoolean(true);
			nolimitItem.setBoolean(false);
			s60Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
			s120Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
			s300Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
			s600Item.setImage(Resources.getImage(Resources.IMG_ENABLED));
			nolimitItem.setImage(Resources.getImage(Resources.IMG_DISABLED));
		}
			break;
		case ACTION_NOLIMIT: {
			MazeCanvas.timeLimit = -1;
			RmsFacade.setInt(MyGame.TIMELIMIT_SET, MazeCanvas.timeLimit);
			s60Item.setBoolean(false);
			s120Item.setBoolean(false);
			s300Item.setBoolean(false);
			s600Item.setBoolean(false);
			nolimitItem.setBoolean(true);
			s60Item.setImage(Resources.getImage(Resources.IMG_DISABLED));
			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_ENABLED));
		}
			break;
		case ACTION_BGMUSIC1: {
			bgMusic = Audio.BGMUSIC1;
			RmsFacade.setInt(MyGame.BGMUSIC_SET, bgMusic);
			bgmusic1.setBoolean(true);
			bgmusic2.setBoolean(false);
			bgmusic3.setBoolean(false);
			bgmusic1.setImage(Resources.getImage(Resources.IMG_ENABLED));
			bgmusic2.setImage(Resources.getImage(Resources.IMG_DISABLED));
			bgmusic3.setImage(Resources.getImage(Resources.IMG_DISABLED));
			Audio.playSound(Audio.BGMUSIC1);
		}
			break;
		case ACTION_BGMUSIC2: {
			bgMusic = Audio.BGMUSIC2;
			RmsFacade.setInt(MyGame.BGMUSIC_SET, bgMusic);
			bgmusic1.setBoolean(false);
			bgmusic2.setBoolean(true);
			bgmusic3.setBoolean(false);
			bgmusic1.setImage(Resources.getImage(Resources.IMG_DISABLED));
			bgmusic2.setImage(Resources.getImage(Resources.IMG_ENABLED));
			bgmusic3.setImage(Resources.getImage(Resources.IMG_DISABLED));
			Audio.playSound(Audio.BGMUSIC2);
		}
			break;
		case ACTION_BGMUSIC3: {
			bgMusic = Audio.BGMUSIC3;
			RmsFacade.setInt(MyGame.BGMUSIC_SET, bgMusic);
			bgmusic1.setBoolean(false);
			bgmusic2.setBoolean(false);
			bgmusic3.setBoolean(true);
			bgmusic1.setImage(Resources.getImage(Resources.IMG_DISABLED));
			bgmusic2.setImage(Resources.getImage(Resources.IMG_DISABLED));
			bgmusic3.setImage(Resources.getImage(Resources.IMG_ENABLED));
			Audio.playSound(Audio.BGMUSIC3);
		}
			break;
		}
	}

	// Menulistener implementation

	// See interface javadoc
	public void newPage(MenuPage fromPage, MenuPage toPage, boolean back) {
		m_softButtons.enable(CMD_BACK, toPage != m_menu.getStartPage());
		if (fromPage instanceof FocusablePage) {
			((FocusablePage) fromPage).onLeave();
		}
		if (toPage instanceof FocusablePage) {
			((FocusablePage) toPage).onEnter();
		}
	}

	// See interface javadoc
	public void itemSelected(MenuPage page, PageItem oldItem, PageItem newItem) {
		if (newItem != null) {
			Object helpTxt = newItem.getProperty(ITEM_HELP);
			m_softButtons.enable(CMD_HELP, helpTxt != null);
		}
	}

	// See interface javadoc
	public void actionCalled(MenuPage page, PageItem item, ItemAction action) {
	}

	// See interface javadoc
	public void transitionStarted(MenuPage fromPage, MenuPage toPage,
			long delay, int frames, boolean back) {
	}

	// See interface javadoc
	public void transitionStopped(MenuPage fromPage, MenuPage toPage) {
	}

	/**
	 * Binary page item turning boolean flags in rms on and off.
	 * 
	 * @author YuBingxing
	 */
	class PersistenceFlagItem extends BinaryPageItem {
		protected int m_key;

		public PersistenceFlagItem(int key, char[] label, Image imageTrue,
				Image imageFalse, int id) {
			super(label, imageTrue, imageFalse, null, MenuCanvas.this, id);
			m_key = key;
		}

		public boolean getBoolean() {
			return RmsFacade.getBoolean(m_key);
		}

		public void setBoolean(boolean value) {
			RmsFacade.setBoolean(m_key, value);
		}
	} // end of PersistenceFlagItem

	/**
	 * Game record page item showing score status.
	 * 
	 * @author YuBingxing
	 */
	class GameRecordPageItem extends PageItem {
		protected GameRecord m_record = null;

		protected char[] m_opponentNameChars;

		protected char[] m_playerScoreChars;

		protected char[] m_opponentScoreChars;

		protected char[] m_gamesChars;

		protected char[] m_lastDateChars;

		public GameRecordPageItem(GameRecord rec) {
			super(null, null, MenuCanvas.this, null, ACTION_SCORE);
			m_record = rec;
			m_opponentNameChars = rec.getOpponentName();
			m_playerScoreChars = Integer.toString(rec.getPlayerScore())
					.toCharArray();
			m_opponentScoreChars = Integer.toString(rec.getOpponentScore())
					.toCharArray();
			m_gamesChars = Integer.toString(rec.getGameCount()).toCharArray();

			Calendar cal = Calendar.getInstance();
			cal.setTime(new Date(rec.getTimestamp()));
			String lastGameDate = cal.get(Calendar.DAY_OF_MONTH) + " ";
			int month = cal.get(Calendar.MONTH);
			switch (month) {
			case Calendar.JANUARY:
				lastGameDate += "Jan";
				break;
			case Calendar.FEBRUARY:
				lastGameDate += "Feb";
				break;
			case Calendar.MARCH:
				lastGameDate += "Mar";
				break;
			case Calendar.APRIL:
				lastGameDate += "Apr";
				break;
			case Calendar.MAY:
				lastGameDate += "May";
				break;
			case Calendar.JUNE:
				lastGameDate += "Jun";
				break;
			case Calendar.JULY:
				lastGameDate += "Jul";
				break;
			case Calendar.AUGUST:
				lastGameDate += "Aug";
				break;
			case Calendar.SEPTEMBER:
				lastGameDate += "Sep";
				break;
			case Calendar.OCTOBER:
				lastGameDate += "Oct";
				break;
			case Calendar.NOVEMBER:
				lastGameDate += "Nov";
				break;
			case Calendar.DECEMBER:
				lastGameDate += "Dec";
				break;
			}
			// lastGameDate += " " + cal.get(Calendar.YEAR);
			int hour = cal.get(Calendar.HOUR_OF_DAY);
			lastGameDate += (hour < 10 ? " 0" : " ") + hour;
			int minute = cal.get(Calendar.MINUTE);
			lastGameDate += (minute < 10 ? ":0" : ":") + minute;
			m_lastDateChars = lastGameDate.toCharArray();

			setLayout(LAYOUT_ALIGN_LEFT);
		}

		public char[] getGamesChars() {
			return m_gamesChars;
		}

		public char[] getLastDateChars() {
			return m_lastDateChars;
		}

		public char[] getOpponentNameChars() {
			return m_opponentNameChars;
		}

		public char[] getOpponentScoreChars() {
			return m_opponentScoreChars;
		}

		public char[] getPlayerScoreChars() {
			return m_playerScoreChars;
		}

		public GameRecord getRecord() {
			return m_record;
		}
	} // end of GameRecordPageItem

	/**
	 * Special painter that also paints <code>GameRecordPageItem</code>s and
	 * adds special effects for selected items.
	 * 
	 * @author YuBingxing
	 */
	static class MyGameMenuPainter extends DefaultMenuPainter {
		protected static final char[] SCORE_TXT = "9999".toCharArray();

		protected int m_scoreWidth;

		protected int[] m_rgbData;

		protected int m_canvasWidth;

		public MyGameMenuPainter(int canvasWidth) {
			// Create selected item rgb buffer
			m_canvasWidth = canvasWidth;
			m_rgbData = new int[m_canvasWidth * 4];
			int bgcol = 0x880000;
			for (int i = 0; i < m_canvasWidth; i++) {
				double alpha = (double) Math.abs(i - m_canvasWidth / 2)
						/ (double) m_canvasWidth;
				int col = bgcol | (128 - (int) (255 * alpha) << 24);
				m_rgbData[i] = col;
				m_rgbData[i + m_canvasWidth] = col;
				m_rgbData[i + m_canvasWidth * 2] = col;
				m_rgbData[i + m_canvasWidth * 3] = col;

			}

			// Calculate maximum score text width
			m_scoreWidth = super.m_itemFont.charsWidth(SCORE_TXT, 0,
					SCORE_TXT.length);
		}

		// Extend PageItem.paintItem to handle GameRecordPageItems
		protected void paintItem(Graphics g, PageItem item, boolean selected,
				int x, int y, int w, int iMaxW, boolean to, boolean from) {
			if (selected) {
				int itemH = getItemHeight(item);
				// draw transparent background on selected item
				for (int by = y; by < y + itemH; by += 4) {
					g.drawRGB(m_rgbData, 0, m_canvasWidth, x - m_canvasWidth
							/ 2, by, m_canvasWidth, Math.min(4, y + itemH
							- (by - y)), true);
				}

			}
			if (item instanceof GameRecordPageItem) {
				g.setFont(super.m_itemFont);
				GameRecordPageItem grItem = (GameRecordPageItem) item;
				char[] opName = grItem.getOpponentNameChars();
				char[] plScore = grItem.getPlayerScoreChars();
				char[] opScore = grItem.getOpponentScoreChars();
				if (!selected) {
					g.setColor(grItem.isEnabled() ? super.m_itemColor
							: super.m_itemColorDisabled);
				} else {
					g.setColor(super.m_selItemColor);
				}
				g.drawChars(opName, 0, opName.length, x - iMaxW / 2, y,
						Graphics.TOP | Graphics.LEFT);
				g.drawChars(plScore, 0, plScore.length, x - iMaxW / 2 + iMaxW
						- m_scoreWidth - super.m_imgPadding, y, Graphics.TOP
						| Graphics.RIGHT);
				g.drawChars(opScore, 0, opScore.length, x - iMaxW / 2 + iMaxW,
						y, Graphics.TOP | Graphics.RIGHT);
			} else {
				super.paintItem(g, item, selected, x, y, w, iMaxW, to, from);
			}
		}

		// Extend PageItem.getItemWidth to handle GameRecordPageItems
		protected int getItemWidth(PageItem item) {
			if (item instanceof GameRecordPageItem) {
				GameRecordPageItem grItem = (GameRecordPageItem) item;
				int w = super.m_itemFont.charsWidth(grItem
						.getOpponentNameChars(), 0, grItem
						.getOpponentNameChars().length);
				w += m_scoreWidth * 2;
				w += super.m_imgPadding * 2;
				return w;
			} else {
				return super.getItemWidth(item);
			}
		}
	} // end of BackgammonMenuPainter
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -