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

📄 menucanvas.java

📁 j2me手机游戏光盘文件 压缩包里有说明文件
💻 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 + -