⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menucanvas.java

📁 PC经典RPG游戏《仙剑奇侠传》手机版的源码
💻 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 + -