📄 menucanvas.java
字号:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.media.MediaException;
//--------------------------------------------------------------------------------------------------------
//游戏名称: 仙剑奇侠传
//作者: 张卫国
//E-mail: weiguo2000@hotmail.com
//创建于:2006/7/18--2006/8/3 by Weiguo
//
//--------------------------------------------------------------------------------------------------------
public class MenuCanvas extends Canvas {
private int[][] Menu = {
{125,0},
{125,23},
{125,46},
{141,0},
{139,23}
};
private int[][] menuBG = {
{0,0},
{64,0},
{128,0}
};
private int select = 0;
private int idg = 0;
private boolean right = false;
private boolean left = false;
private boolean start = true;
private int menuytmp= 0;
private int bgtmp = 0;
private int[] menuy = {0,1,2,1,0};
private int[] bgi = {0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,2,2,2,2,2,1,1,1,1,0,0,0};
public MenuCanvas() {
super();
this.setFullScreenMode(true);
new Th().start();
}
protected void paint(Graphics g) {
g.fillRect(0,0,this.getWidth(),this.getHeight());
if(bgi[bgtmp]<3){
g.drawRegion(XianJianImage.imgMenuBG,menuBG[bgi[bgtmp]][0],menuBG[bgi[bgtmp]][1],64,64,Sprite.TRANS_NONE,90,65,Graphics.RIGHT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuBG,menuBG[bgi[bgtmp]][0],menuBG[bgi[bgtmp]][1],64,64,Sprite.TRANS_MIRROR,90,65,Graphics.LEFT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuBG,menuBG[bgi[bgtmp]][0],menuBG[bgi[bgtmp]][1],64,64,Sprite.TRANS_MIRROR_ROT180,90,65,Graphics.RIGHT|Graphics.TOP);
g.drawRegion(XianJianImage.imgMenuBG,menuBG[bgi[bgtmp]][0],menuBG[bgi[bgtmp]][1],64,64,Sprite.TRANS_ROT180,90,65,Graphics.LEFT|Graphics.TOP);
}
g.drawRegion(XianJianImage.imgMenuM,0,0,72,72,Sprite.TRANS_NONE,90,196,Graphics.RIGHT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,0,0,72,72,Sprite.TRANS_MIRROR,90,196,Graphics.LEFT|Graphics.BOTTOM);
switch(idg){
case 0:
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_NONE,90,153,Graphics.RIGHT|Graphics.TOP);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_MIRROR,90,153,Graphics.LEFT|Graphics.TOP);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_ROT180,90,153,Graphics.LEFT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_MIRROR_ROT180,90,153,Graphics.RIGHT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,77,6,11,6,Sprite.TRANS_NONE,90,133+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90,133,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,29,13,6,Sprite.TRANS_NONE,90+39,140+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90+39,140,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90+42,166+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90+42,166,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,12,18,9,Sprite.TRANS_NONE,90,174+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,86,29,13,11,Sprite.TRANS_NONE,90,174,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90-42,166+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90-42,166,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,29,13,6,Sprite.TRANS_NONE,90-39,140+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90-39,140,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,47,72,15,29,Sprite.TRANS_NONE,89,154,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,73,68,15,34,Sprite.TRANS_NONE,89,125,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,99,0,15,95,Sprite.TRANS_NONE,89,91,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,0,5,7,Sprite.TRANS_NONE,102,155,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,0,5,7,Sprite.TRANS_MIRROR,77,155,Graphics.HCENTER|Graphics.BOTTOM);
break;
case 1:
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_NONE,90,153,Graphics.RIGHT|Graphics.TOP);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_MIRROR,90,153,Graphics.LEFT|Graphics.TOP);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_ROT180,90,153,Graphics.LEFT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_MIRROR_ROT180,90,153,Graphics.RIGHT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,77,6,11,6,Sprite.TRANS_NONE,90+10,133+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90+10,133,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,29,13,6,Sprite.TRANS_NONE,90+47,145+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90+47,145,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90+33,169+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90+33,169,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,12,18,9,Sprite.TRANS_NONE,90-12,173+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,86,29,13,11,Sprite.TRANS_NONE,90-12,173,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90-47,160+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90-47,160,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,29,13,6,Sprite.TRANS_NONE,90-30,137+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90-30,137,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,47+15,72,11,29,Sprite.TRANS_NONE,89,154,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,73+15,68,11,34,Sprite.TRANS_NONE,89,125,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,99+15,0,11,95,Sprite.TRANS_NONE,89,91,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,6,5,8,Sprite.TRANS_NONE,102,156,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,6,5,8,Sprite.TRANS_MIRROR,77,156,Graphics.HCENTER|Graphics.BOTTOM);
break;
case 2:
g.drawRegion(XianJianImage.imgMenuM,77,6,11,6,Sprite.TRANS_NONE,90+21,135+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90+21,135,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,29,13,6,Sprite.TRANS_NONE,90-21,135+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90-21,135,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90+51,153+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90+51,153,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90-51,153+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90-51,153,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,12,18,9,Sprite.TRANS_NONE,90+23,172+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,86,29,13,11,Sprite.TRANS_NONE,90+23,172,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,12,18,9,Sprite.TRANS_NONE,90-23,172+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,86,29,13,11,Sprite.TRANS_NONE,90-23,172,Graphics.HCENTER|Graphics.BOTTOM);
break;
case 3:
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_NONE,90,153,Graphics.RIGHT|Graphics.TOP);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_MIRROR,90,153,Graphics.LEFT|Graphics.TOP);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_ROT180,90,153,Graphics.LEFT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_MIRROR_ROT180,90,153,Graphics.RIGHT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,77,6,11,6,Sprite.TRANS_NONE,90+30,137+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90+30,137,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90+47,160+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90+47,160,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,12,18,9,Sprite.TRANS_NONE,90+12,173+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,86,29,13,11,Sprite.TRANS_NONE,90+12,173,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90-33,169+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90-33,169,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90-47,145+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90-47,145,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,29,13,6,Sprite.TRANS_NONE,90-10,133+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90-10,133,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,47+15,72,11,29,Sprite.TRANS_NONE,89,154,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,73+15,68,11,34,Sprite.TRANS_NONE,89,125,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,99+15,0,11,95,Sprite.TRANS_NONE,89,91,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,6,5,8,Sprite.TRANS_NONE,102,156,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,6,5,8,Sprite.TRANS_MIRROR,77,156,Graphics.HCENTER|Graphics.BOTTOM);
break;
case 4:
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_NONE,90,153,Graphics.RIGHT|Graphics.TOP);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_MIRROR,90,153,Graphics.LEFT|Graphics.TOP);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_ROT180,90,153,Graphics.LEFT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,0,87,46,16,Sprite.TRANS_MIRROR_ROT180,90,153,Graphics.RIGHT|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,77,6,11,6,Sprite.TRANS_NONE,90,133+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90,133,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,29,13,6,Sprite.TRANS_NONE,90+39,140+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90+39,140,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90+42,166+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90+42,166,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,12,18,9,Sprite.TRANS_NONE,90,174+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,86,29,13,11,Sprite.TRANS_NONE,90,174,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,21,15,8,Sprite.TRANS_NONE,90-42,166+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,88,20,11,9,Sprite.TRANS_NONE,90-42,166,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,29,13,6,Sprite.TRANS_NONE,90-39,140+3,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,91,0,8,7,Sprite.TRANS_NONE,90-39,140,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,47,72,15,29,Sprite.TRANS_NONE,89,154,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,73,68,15,34,Sprite.TRANS_NONE,89,125,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,99,0,15,95,Sprite.TRANS_NONE,89,91,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,0,5,7,Sprite.TRANS_NONE,102,155,Graphics.HCENTER|Graphics.BOTTOM);
g.drawRegion(XianJianImage.imgMenuM,72,0,5,7,Sprite.TRANS_MIRROR,77,155,Graphics.HCENTER|Graphics.BOTTOM);
break;
}
if(!right&&!left){
int menutmp[]=Menu[select];
g.drawRegion(XianJianImage.imgMenuM,menutmp[0],menutmp[1],16,23,Sprite.TRANS_NONE,90,90-menuy[menuytmp],Graphics.HCENTER|Graphics.BOTTOM);
}
}
protected void keyPressed(int key) {
int code=getGameAction(key);
switch(code){
case RIGHT:
right=true;
select++;
if(select>4){
select=0;
}
break;
case LEFT:
left=true;
select--;
if(select<0){
select=4;
}
break;
case FIRE:
start=false;
switch(select){
case 0:
try {
XianJianImage.pl.stop();
} catch (MediaException e) {
e.printStackTrace();
}
XianJianLet.dis.setCurrent(new XianJianCanvas());
break;
case 1:
XianJianLet.dis.setCurrent(new MenuCanvas());
break;;
case 2:
XianJianLet.dis.setCurrent(new HelpCanvas());
break;
case 3:
XianJianLet.dis.setCurrent(new AboutCanvas());
break;
case 4:
XianJianImage.pl.close();
XianJianLet.let.notifyDestroyed();
break;
}
break;
}
}
protected void keyReleased(int key) {
}
class Th extends Thread{
public void run() {
while(start){
if(right){
for(idg=4;idg>=0;idg--){
show();
}
idg=0;
right=false;
}
if(left){
for(idg=1;idg<=4;idg++){
show();
}
idg=0;
left=false;
}
menuytmp++;
menuytmp%=menuy.length;
bgtmp++;
bgtmp%=bgi.length;
repaint();
try {
Thread.sleep(80);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private void show(){
repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -