📄 cmenu.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.Canvas;
import com.nokia.mid.ui.*;
public class CMenu
{
private Graphics m_offG;
private Image m_imbk;
private Image m_imHelp;
private Image m_imSign1;
private Image m_imSign2;
private Image m_imLOGO1;
private Image m_imLOGO2;
private int m_Frame = 1; //起始状态,通过按键控制当前选项
private int m_nowFrame = 1; //按下确定键时的当前状态
private boolean m_confirm = false; //判断是否按下确定键
private int m_t2 = 0; //用来限制从按下确定到下一个页面显示之间的时间
private int m_t1 = 0; //用来限制移动百宝箱和移动LOGO的加载时间
private boolean m_start = true;
private int m_alpha = 0; //做渐变效果
private int m_px[]={0,176,176,0};
private int m_py[]={0,0,208,208};
private boolean m_isStarted = false; //是否开始进行游戏
private boolean m_canSelect = true; //是否允许选择菜单
public CMenu(Graphics graphics)
{
m_offG = graphics;
try
{
m_imbk = Image.createImage("/data/logo6.png");
m_imHelp = Image.createImage("/data/help.png");
m_imSign1 = Image.createImage("/data/xx.png");
m_imSign2 = Image.createImage("/data/xx2.png");
m_imLOGO2 = Image.createImage("/data/Mbox-Icon.png");
m_imLOGO1 = Image.createImage("/data/monlernet.png");
} catch(Exception e) { System.out.println("CMenu PIC ERROR!!!"); }
}
public void drawHelp()
{
m_offG.setClip(0, 0, 176, 208);
m_offG.drawImage(m_imHelp, 0, 0, 0);
}
public void drawLOGO()
{
m_offG.setClip(0, 0, 176, 208);
m_offG.drawImage(m_imbk, 0, 0, 0);
if(!m_confirm)//没有按下确定的时候加载翅膀合拢的图片
{
m_offG.setClip(60, 105, 59, 81);
m_offG.drawImage(m_imSign1, 60 - (this.m_Frame - 1) * 59, 105, 0);
}
else //按下确定之后加载翅膀展开的图片
{
m_offG.setClip(22, 105, 138, 81);
m_offG.drawImage(m_imSign2, 22 - (this.m_Frame - 1) * 138, 105, 0);
m_nowFrame = m_Frame;
}
}
public void draw()
{
run();
DirectGraphics dg = DirectUtils.getDirectGraphics(m_offG);
if(m_t1 <= 30) //显示第一张移动百宝箱 LOGO
{
m_offG.setColor(255, 255, 255);
m_offG.fillRect(0, 0, 176, 208);
m_offG.setClip(30, 66, 116, 75);
m_offG.drawImage(m_imLOGO1, 30, 66, 0);
}
else if(m_t1 > 30 && m_t1 <= 55) //显示第二张移动百宝箱 LOGO
{
m_offG.setClip(0, 0, 176, 208);
m_offG.drawImage(m_imLOGO2, 0, 0, 0);
}
else //显示菜单
{
drawLOGO();
m_start = false;
}
switch(m_nowFrame)
{
case 1: //start
m_offG.setClip(0, 0, 176, 208);
dg.fillPolygon(m_px, 0, m_py, 0, 4, 0x00000000 + m_alpha * 0x10000000);
if (m_t2 > 15)
{
setGameStarted(true);
m_confirm = false;
}
break;
case 2: //read
//未完成,需要用到数据仓库暂时搁置
break;
case 3: //help
m_offG.setClip(0, 0, 176, 208);
dg.fillPolygon(m_px, 0, m_py, 0, 4, 0x00000000 + m_alpha * 0x10000000); //255是不透明
if (m_t2 > 15)
{
drawHelp();
m_confirm = false;
}
break;
case 4: //about
//未完成
break;
case 5: //exit
gameStart.midlet.notifyDestroyed();
break;
}
}
public void run()
{
if(m_start) //标志一开始的时候显示移动和百宝箱的LOGO
{
m_t1++;
if (m_t1 > 60)
m_t1 = 0;
}
else if (m_confirm) //标志按下确定键后控制进入下一个画面的时间差,渐变
{
m_t2++;
if (m_t2 > 20)
m_t2 = 0;
if (m_alpha < 255)
{
m_alpha += 17;
}
else
{
m_confirm = false;
m_alpha = 255;
}
}
}
public void reset()
{
m_Frame = 1; //起始状态,通过按键控制当前选项
m_nowFrame = 1; //按下确定键时的当前状态
m_confirm = false; //判断是否按下确定键
m_t2 = 0; //用来限制从按下确定到下一个页面显示之间的时间
m_t1 = 56; //用来限制移动百宝箱和移动LOGO的加载时间
m_start = false;
m_alpha = 0; //做渐变效果
m_isStarted = false; //是否开始进行游戏
m_canSelect = true; //是否允许选择菜单
}
public void setGameStarted(boolean isStarted)
{
m_isStarted = isStarted;
}
public boolean isGameStarted()
{
return m_isStarted;
}
public void keyPressed(int key)
{
if (!m_start && m_canSelect) //移动LOGO显示完后才响应菜单选择,同时正在渐变效果时不能选择
{
switch(key)
{
case Canvas.UP:
m_Frame -= 1;
if (m_Frame < 1)
m_Frame = 5;
break;
case Canvas.DOWN:
m_Frame += 1;
if (m_Frame > 5)
m_Frame = 1;
break;
case Canvas.FIRE:
m_confirm = true;
m_canSelect = false;
break;
}
}
if (!m_start)
{
if (key == 0) //按下右键或左键、1 键、3 键、0 键,返回菜单
{
m_nowFrame = 0;
m_Frame = 1; //返回菜单时显示第一项“进入游戏”
m_t2 = 0;
m_alpha = 0;
m_canSelect = true;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -