📄 mainmenu.java
字号:
//package bushfighting;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Canvas;
import com.nokia.mid.ui.FullCanvas;
public class MainMenu extends FullCanvas implements Runnable {
private int mCanvasWidth, mCanvasHeight;
private int mItemIndex = 0; //当前的菜单索引
private int mItemWidth, mItemHeight;
private Image mBufferImage; //用作双缓冲的图片
private Graphics mBGraphics;
private Image mBGImage = null; //用作菜单背景
private BushFighting mMIDlet = null;
protected Display mDisplay = null;
public MainCanvas mGameCanvas = null; //游戏的主界面
private NetDataForm mDataForm = null; //用于进行数据处理和信息显示
private Score mScore = null;
private DisplayManager mDisplayManager = null;
private boolean mShowMenu = false; //菜单是否弹出的标志
private MainMenu menu = this;
private boolean mLoadFinished = false;//是否加载完毕的标志
protected Media title = new Media("/sound/title.mid","audio/midi",false);
/* private boolean stopSplash=false;
private int splashX=0;
private int splashY=0;
private int clipY=0;
private int splashStep=1;
private Image textImg=null;//文字介绍图片
*/
private final int mProgressBar = 80; //进度条的长度
private int mCurrentValue = 0; //当前的进度条位置
private int mState = 1; //用于表示当前显示的是启动画面还是菜单画面,0,表示启动,1表示菜单
private static final String[] mMenuItems = {"开始游戏","游戏帮助","音乐 ","关于游戏","退出游戏"};
public final String STR_ABOUT = "开发商:& 广州奥创信息技术有&限公司。&开发商:&北京飒美&网络有限公司。&如果您有什么建议的话&请致电& 010-58695258&或Email:& service@sammy-net.com.cn& &非常感谢您的使用。";
public final String STR_PRODUCTINFO = "游戏名称:&三国志-黄忠霸业&版本号:1.0.0&程序大小:80K&占用内存:160K&资费:7元/次下载&发行商:广州奥创&信息技术有限&公司开发商:&北京飒美网络有限公司&如果有什么建议&请致电:&010-58695258-322& 邮箱:&service@sammy-net.com.cn & 非常感谢您的使用";
private final String STR_HELPINFO = "在乱世的三国世界里&"+
"董卓挟天子以令诸侯&"+
"黄巾势力独霸一方&"+
"在这混沌的世界里&"+
"流传着一本野史&"+
"记载着黄忠的英雄事迹&"+
"平乱黄巾贼&"+
"三英战吕布&"+
"长板桥之役&"+
"火烧连环船&"+
"辅助刘备入驻西蜀&"+
"玩家需要操作黄忠&"+
"重新演绎这段野史&"+
"成就霸业!&"+
"导航键上/数字键2:&"+
" 操作角色向上移动 &"+
"导航键下/数字键8:&"+
" 操作角色向下移动 &"+
"导航键左/数字键4:&"+
" 操作角色向左移动 &"+
"导航键右/数字键6:&"+
" 操作角色向右移动 &"+
"导航键中/数字键5:&"+
" 发射弓箭";
public MainMenu(BushFighting midlet, Display display) {
mMIDlet = midlet;
mDisplay = display;
mCanvasWidth = getWidth();
mCanvasHeight = getHeight();
mBufferImage = Image.createImage(mCanvasWidth, mCanvasHeight);
mBGraphics = mBufferImage.getGraphics();
mDisplayManager = new DisplayManager(mDisplay, this);
try {
mBGImage = HF.loadImage("mlogo2.png");
mBGraphics.drawImage(mBGImage, 0, 0, Graphics.LEFT | Graphics.TOP); //先将
//mBGImage = HF.loadImage("mlogo2.png");
} catch (Exception e) {
System.out.println("error loading the logo");
}
}
//初始化数据数据
public void initGame() {
//使用一个内嵌的线程去加载
//Thread thread = new Thread()
//{
//public void run()
//{
mScore = new Score();
mDataForm = new NetDataForm(mDisplayManager, mScore, mBufferImage);
mGameCanvas = new MainCanvas(menu, mDataForm, mScore, mBufferImage);
mGameCanvas.init();
mGameCanvas.setDisplayManager(mDisplayManager);
mLoadFinished = true;
//}
//};
//thread.start();
}
//显示启动画面
public void showSplashWindow() {
mState = 2; //显示启动画面
Thread thread = new Thread(this);
thread.start();
}
//绘制启动画面
private void drawSplashWindow(Graphics g) {
clearScreen(mBGraphics,0);
/* mBGraphics.setClip(0,mCanvasHeight/2-clipY,mCanvasWidth,clipY<<1);
clipY+=splashStep;
mBGraphics.drawImage(mBGImage, splashY>=0?0:splashY,mCanvasHeight>>1, Graphics.VCENTER | Graphics.LEFT);
mBGraphics.setClip(0,mCanvasHeight+mBGImage.getHeight()>>1,mCanvasWidth,mCanvasHeight);
mBGraphics.drawImage(textImg,0,splashX,Graphics.LEFT|Graphics.TOP);
mBGraphics.setClip(0,0,mCanvasWidth,mCanvasHeight);
*/
mBGraphics.setColor(HF.COLOR_WHITE);
int x = (mCanvasWidth - mProgressBar) / 2;
int y = 150;
mBGraphics.fillRect(x, y, mProgressBar, 10);
mBGraphics.setColor(HF.COLOR_BLUE);
mBGraphics.fillRect(x, y, mCurrentValue, 10);
g.drawImage(mBufferImage, 0, 0, Graphics.LEFT | Graphics.TOP);
}
//用于处理显示启动画面
public void run() {
System.out.println("线程运行");
int step = 8;
// try {
if (mState == 2) {
repaint(0, 0, mCanvasWidth, mCanvasHeight);
System.gc();
try{
Thread.sleep(1000);
}catch(Exception e){}
//转去显示公司的logo,并且加载游戏启动完毕后的logo
try{
mBGraphics.drawImage(mBGImage, 0, 0, Graphics.LEFT | Graphics.TOP); //先将
//mBGImage = HF.loadImage("logo.png");
mBGImage=HF.loadImage("splash.png");
//textImg=HF.loadImage("text.png");
} catch(Exception e){
}
//mState = 0;
}
if(mState == 2){
System.out.println("循环中前");
repaint(0,0,mCanvasWidth,mCanvasHeight);
System.gc();
try{
Thread.sleep(500);
}catch(Exception e){}
//stopSplash=false;
//splashX=mCanvasHeight+textImg.getHeight();
//splashY=10;
//clipY=0;
//HF.title.load();
mState = 0;
//mLoadFinished=false;
}
while (mLoadFinished== false/*||!stopSplash&&(splashX+textImg.getHeight())>(mCanvasHeight/2)*/ ||mCurrentValue < mProgressBar) {
//System.out.println("循环中"+(splashX+textImg.getHeight()));
/*splashX-=splashStep;
if(splashY+mBGImage.getWidth()>mCanvasWidth)
splashY--;
mCurrentValue += step;
*/
if (mCurrentValue >= mProgressBar)
mCurrentValue = mProgressBar - 2;
if (mLoadFinished == true)
mCurrentValue = mProgressBar;
repaint(0, 0, mCanvasWidth, mCanvasHeight);
try{
Thread.sleep(50);
}catch(Exception e){}
}
// }
// catch (Exception e) {
// }
try{
//textImg=null;
mBGImage=HF.loadImage("logo.png");
System.gc();
}catch(Exception e){}
mState = 1; //切换为显示菜单画面
//HF.title.play();
repaint(0, 0, mCanvasWidth, mCanvasHeight);
if(HF.sound)
title.play();
}
//执行绘制菜单的工作
public void paint(Graphics g) {
if (mState == 2) {
g.drawImage(mBufferImage, 0, 0, Graphics.LEFT | Graphics.TOP);
} else if (mState == 0) {
drawSplashWindow(g);
} else {
clearScreen(mBGraphics, HF.COLOR_LIGHTBLUE);
mBGraphics.drawImage(mBGImage, 0, 0, Graphics.LEFT | Graphics.TOP);
mBGraphics.setFont(HF.SMALL_FONT);
drawMenu(mBGraphics);
g.drawImage(mBufferImage, 0, 0, Graphics.LEFT | Graphics.TOP);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -