📄 menu.java~9~
字号:
package Game;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.Canvas;
public class Menu
{
MyCanvas mc;
int Frame = 1; //起始状态,通过按键控制当前选项
int nowFrame = 1; //按下确定键时的当前状态
boolean confirm = false; //判断是否按下确定键
int t2 = 0; //用来限制从按下确定到下一个页面显示之间的时间
int t1 = 0; //用来限制移动百宝箱和移动LOGO的加载时间
boolean start = true;
int alpha = 0; //做渐变效果
int px[]={0,176,176,0};
int py[]={0,0,208,208};
boolean isStarted = false; //是否开始进行游戏
boolean canSelect = true; //是否允许选择菜单
public Menu(MyCanvas mc)
{
this.mc = mc;
}
public void drawHelp(Graphics g)
{
}
public void drawLOGO(Graphics g)
{
g.setClip(0, 0, 176, 208);
g.drawImage(mc.image.img_BattleBG, 0, 0, 0);
if(!confirm)//没有按下确定的时候加载翅膀合拢的图片
{
g.setClip(60, 105, 59, 81);
g.drawImage(mc.image.img_menuButton1, 60 - (this.Frame - 1) * 59, 105, 0);
}
else //按下确定之后加载翅膀展开的图片
{
g.setClip(22, 105, 138, 81);
g.drawImage(mc.image.img_menuButton2, 22 - (this.Frame - 1) * 138, 105, 0);
nowFrame = Frame;
}
}
public void draw(Graphics g)
{
run();
if(t1 <= 30) //显示第一张移动百宝箱 LOGO
{
g.setColor(255, 255, 255);
g.fillRect(0, 0, 176, 208);
g.setClip(30, 66, 116, 75);
g.drawImage(mc.image.img_logo1, 30, 66, 0);
}
else if(t1 > 30 && t1 <= 55) //显示第二张移动百宝箱 LOGO
{
g.setClip(0, 0, 176, 208);
g.drawImage(mc.image.img_logo2, 0, 0, 0);
}
else //显示菜单
{
drawLOGO(g);
start = false;
}
switch(nowFrame)
{
case 1: //start
g.setClip(0, 0, 176, 208);
if (t2 > 15)
{
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
setGameStarted(true);
confirm = false;
}
break;
case 2: //read
//未完成,需要用到数据仓库暂时搁置
break;
case 3: //help
g.setClip(0, 0, 176, 208);
if (t2 > 15)
{
drawHelp(g);
confirm = false;
}
break;
case 4: //about
//未完成
break;
case 5: //exit
break;
}
}
public void run()
{
if(start) //标志一开始的时候显示移动和百宝箱的LOGO
{
t1++;
if (t1 > 60)
t1 = 0;
}
else if (confirm) //标志按下确定键后控制进入下一个画面的时间差,渐变
{
t2++;
if (t2 > 20)
t2 = 0;
if (alpha < 255)
{
alpha += 17;
}
else
{
confirm = false;
alpha = 255;
}
}
}
public void reset()
{
Frame = 1; //起始状态,通过按键控制当前选项
nowFrame = 1; //按下确定键时的当前状态
confirm = false; //判断是否按下确定键
t2 = 0; //用来限制从按下确定到下一个页面显示之间的时间
t1 = 56; //用来限制移动百宝箱和移动LOGO的加载时间
start = false;
alpha = 0; //做渐变效果
isStarted = false; //是否开始进行游戏
canSelect = true; //是否允许选择菜单
}
public void setGameStarted(boolean isStarted)
{
isStarted = isStarted;
}
public boolean isGameStarted()
{
return isStarted;
}
public void keyPressed(int key)
{
if (!start && canSelect) //移动LOGO显示完后才响应菜单选择,同时正在渐变效果时不能选择
{
switch(key)
{
case Canvas.UP:
Frame -= 1;
if (Frame < 1)
Frame = 5;
break;
case Canvas.DOWN:
Frame += 1;
if (Frame > 5)
Frame = 1;
break;
case Canvas.FIRE:
confirm = true;
canSelect = false;
break;
}
}
if (!start)
{
if (key == 0) //按下右键或左键、1 键、3 键、0 键,返回菜单
{
nowFrame = 0;
Frame = 1; //返回菜单时显示第一项“进入游戏”
t2 = 0;
alpha = 0;
canSelect = true;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -