📄 menucanvas.java
字号:
import javax.microedition.lcdui.*;
import java.lang.String;
import javax.microedition.lcdui.game.*;
import popup.*;
public class MenuCanvas extends Canvas implements Runnable,PopupListener
{
static Image imgBack,imgMenu,imgArrow;
public static byte index;
public static boolean isAudioOn;
public static boolean hasStore;
int offsetX;
public static LoadingCanvas ldCanvas;
protected Popup popup;
public static boolean running;
static SwordMIDlet midlet;
public static SwordCanvas swordCanvas;
public static int CanvasWidth,CanvasHeight;
public static Font mFont = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_LARGE);
static GraphicsEffects ge = GraphicsEffects.getInstance();
static SoundEffects se = SoundEffects.getInstance();
protected String helpStr =
"游戏背景:"+ "\n\n" +
"靖康耻,犹未雪。臣子恨,何时灭。尹风协助郭靖驻守襄阳,并不断成长,最终成为一代剑神。"+ "\n\n" +
"操作方法:"+ "\n\n" +
"游戏中用方向键和2、4、6、8键控制主角移动以及进行菜单选择,5键或OK键选定,3键调出/关闭属性菜单,左软键调出操作菜单,可查看帮助信息,保存游戏或回到主菜单。"+ "\n\n" +
"关键提示:"+ "\n\n" +
"玩家每次升级将得到一点技能属性用来学习技能,每项技能所能修炼的最高等级受主角等级限制,技能等级越高,效果越显著。使用“召狼”等技能时,召唤出的宠物将被优先攻击。使用技能会消耗主角的“气力”,“回气”技能将耗费一定数量的金钱。主角战死会损失一定比例的经验及金钱。"+ "\n\n" +
"在战斗过程中菜单选项将不会响应。"+ "\n\n" +
"招式详解:"+ "\n\n" +
"落日:用内力聚成一个落日,对单个敌人造成极大伤害。"+ "\n\n" +
"乱电:在天空中形成流星般的巨石,砸向全部敌人。"+ "\n\n" +
"残风:耗费自身的血和气来形成一股飓风,对全部敌人造成较大伤害。"+ "\n\n" +
"召狼:召唤精灵狼来辅助战斗,生命力较弱但攻击力很强。"+ "\n\n" +
"召熊:召唤精灵熊来辅助战斗,攻击力很弱但生命力较强,可以用作战斗中的护盾。"+ "\n\n" +
"召龙:召唤神龙来辅助战斗,可以反弹敌人部分攻击并反伤敌人。"+ "\n\n" +
"隐身:在数回合内主角将不受攻击,但使用附身或攻击敌人则会失效。"+ "\n\n" +
"遁走:从战斗中直接逃走,技能等级高则逃走成功率大。"+ "\n\n" +
"附身:召唤影子与主角并肩作战,使主角生命力和攻击力按比例上升。"+ "\n\n" +
"回血:恢复主角一定比例的生命力。"+ "\n\n" +
"补气:恢复主角一定比例的气力,但要耗费一定量的金钱。";
protected String aboutStr =
"游戏名称:剑圣"+ "\n\n" +
"程序:AAA"+ "\n\n" +
"美工:BBB"+ "\n\n" +
"策划:CCC"+ "\n\n" +
"发行:DDD";
public MenuCanvas(SwordMIDlet midlet)
{
setFullScreenMode(true);
CanvasWidth = getWidth();
CanvasHeight = getHeight();
popup = new Popup();
running=true;
hasStore = false;
loadResource();
isAudioOn=true;
index=0;
repaint();
this.midlet=midlet;
}
public static void loadResource()
{
SwordStore store=new SwordStore();
if(store.open())
hasStore=true;
else
hasStore=false;
try
{
imgBack=Image.createImage("/menuBg.png");
imgMenu=Image.createImage("/menu.png");
imgArrow=Image.createImage("/arrow.png");
}
catch(java.io.IOException ioe)
{
System.out.println("error");
}
}
public void start()
{
running=true;
new Thread(this).start();
}
public void run()
{
while(running)
{
try
{
offsetX++;
if(offsetX==8)
offsetX=0;
repaint();
Thread.sleep(40);
}
catch(Exception e)
{
}
}
}
void load(int i)
{
running=false;
imgBack=null;
imgMenu=null;
ldCanvas=null;
ldCanvas=new LoadingCanvas(i);
new Thread(ldCanvas).start();
// loading.start();
midlet.show(ldCanvas);//显示Loading界面。
}
public void keyPressed(int keyCode)
{
int g=getGameAction(keyCode);
if (popup.isActive())
{
popup.keyPressed(keyCode, g);
repaint();
return;
}
switch(g)
{
case LEFT:
if(index>0)
{
index--;
if(!hasStore&&index==1)
index=0;
else
if(index==3&&isAudioOn)
index=2;
else
if(index==2)
{
if(!hasStore)
index=0;
else
index=1;
}
}
else
index=6;
repaint();
break;
case RIGHT:
if(index<6)
{
index++;
if(!hasStore&&index==1)
{
if(isAudioOn)
index=2;
else
index=3;
}
else
if(index==3)
index=4;
}
else
index=0;
repaint();
break;
default:
if(keyCode==-6||getGameAction(keyCode)==8)
{
switch(index)
{
case 0:
load(1);
break;
case 1:
SwordStore store=new SwordStore();
if(store.open())
load(0);
break;
case 4:
showPopup(helpStr.toCharArray(), Popup.ALT_OK, 0, 0, 0);
break;
case 5://关于游戏
showPopup(aboutStr.toCharArray(), Popup.ALT_OK, 0, 0, 0);
case 2:
case 3:
isAudioOn=!isAudioOn;
if(isAudioOn)
index=2;
else
index=3;
repaint();
break;
case 6:
midlet.exit();
break;
default:
break;
}
}
break;
}
}
public void selectedChoice(byte choice, boolean timeOut)
{
repaint();
}
public void showPopup(char[] imgMenu, char[][] altTexts,
int timeOutInSeconds, int defaultChoice, int timeOutChoice)
{
if (popup.isActive())
{
selectedChoice(popup.getTimeOutChoice(), true);
popup.dispose();
}
popup.init(imgMenu, altTexts, (byte) timeOutInSeconds, (byte) defaultChoice,
(byte) timeOutChoice, this, getWidth(),
getHeight());
repaint();
}
public void paint(Graphics g)
{
g.drawImage(imgBack,0,0,g.TOP|g.LEFT);
ge.drawClipImage(g,imgArrow,45-offsetX,145,5,10,0,0);
ge.drawClipImage(g,imgArrow,183+offsetX,145,5,10,5,0);
ge.drawClipImage(g,imgMenu,58,135,118,30,0,index*30);
if (popup.isActive())
{
popup.paint(g);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -