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

📄 bhcanvas.java

📁 game for basketball. Midlet,support MIDP2.0
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.util.*;
import com.nokia.mid.ui.*;
public class bhCanvas extends
	FullCanvas
{
	private Image offscreen;
	public Basketball m_pAppPtr;
	public static boolean m_bRunning = false;
	public static boolean m_bUpdate = false;
	private Timer timer;
	private static boolean m_bPaused = false;
	private static long pTime;
	private static Command right = null;
	private static Command left = null;
//	private static Image ok;
//	private static Image x;
	public static String debugText = "D";
	public int getWidth()
	{
		return 176;
	}
	public int getHeight()
	{
		return 208;
	}
	static public void pauseApp()
	{
		m_bPaused = true;
		pTime = System.currentTimeMillis();
		return;
	}
	public static void Touch()
	{
	}
	static public void resumeApp()
	{
		m_bPaused = false;
		int dif =(int)(System.currentTimeMillis()- pTime);
		for(int i = 0; i < timerCnt; i++)
			lasts[i]+= dif;
		return;
	}
	boolean inGame = false;
	public void setLeftCommandText(String s)
	{
	    leftLable=s;
		if(s.toUpperCase().indexOf("PAUSE")> -1)
		{
			inGame = true;
		}
		else
		{
			inGame = false;
		}
		return;
	}
	public void setRightCommandText(String s)
	{
	    rightLable=s;
		return;
	}
	bhCanvas(Basketball pAppPtr)
	{
		m_pAppPtr = pAppPtr;
		/*if(ok == null || x == null){
				try {
					ok = Image.createImage("/ok.png");
				x = Image.createImage("/x.png");
			} catch(Exception e){ }
		}*/
		timer = new Timer();
		TimerTask t = new TimerTask()
		{
			public void run()
			{
				try
				{
					if(!paused)
					{
						chkTimerEvents();
						if(m_bUpdate)
						{
							Basketball.bUpdate = true;
							repaint();
							serviceRepaints();
						}
					} else {
						repaint();
						Thread.yield();
					}
				}
				catch(RuntimeException rte)
				{
				}
			}
		};
		timer.schedule(t, 125, 125);
		return;
	}
	public int tn = 0;
	public int progress = 0;
	public int maxProgress = 1;
	public void incrementProgress()
	{
		progress++;
		repaint(0, 0, getWidth(), getHeight());
		serviceRepaints();
		return;
	}
	private void updateLoadBar(Graphics g)
	{
		int originw = 5;
		int originh = getHeight()- 4;
		g.setColor(0);
		g.setClip(originw, originh - 10, getWidth()- 10, 10);
		g.fillRect(originw, originh - 10, getWidth()- 10, 10);
		g.setColor(0xffffff);
		g.fillRect(originw + 2, originh - 8, getWidth()- 14, 6);
		int percent =((getWidth()- 14)* progress)/ maxProgress;
		if(percent > getWidth()- 14)
			percent = getWidth()- 14;
		g.setColor(0xff0000);
		g.fillRect(originw + 2, originh - 8, percent, 6);
		return;
	}
	boolean paused = false;
	public void hideNotify(){
			paused = true;
//		try { Basketball.pSndJingle.stop(); } catch(Exception e){ }
//		Basketball.Stop();
	}
	public void showNotify()
	{
		if(Basketball.hGameWnd != null)
			Basketball.hGameWnd.ClrInput();
//		Basketball.Restart();
	}
	Graphics primary = null;
	public void paint(Graphics g)
	{
		if(paused)
		{
			g.setColor(0x000000);
			g.fillRect(0, 0, 176, 208);
			g.setColor(0xFFFFFF);
			g.drawString("按 #键 返回游戏.", 176 / 2, 208 / 2, Graphics.TOP | Graphics.HCENTER);
			return;
		}
		bhCanvas.debugText = "";
		if(progress > 0)
			updateLoadBar(g);
		else
			win.paintAllWindows(g);
		g.setClip(0, 0, 176, 208);
		/*if(!inGame)
			g.drawImage(ok, 0, 208 - 8, 20);
		if(FrontEnd.m_iState > 4 || FrontEnd.m_iState < 0)
		{
			g.drawImage(x, 176 - 21, 208 - 8, 20);
		}*/
		if(FrontEnd.m_iState ==4/*||FrontEnd.m_iState ==3*/)
		{
			g.setColor(0xffffff);
			g.drawString("正在加载...",176/2,208/2+30,g.TOP|g.HCENTER);
		}
	
		///* if(win.focusWin.winState!=-1){
		     PaintFakeSoftKeys(g);
		//     }*/
		return;
	}
	String leftLable="";
	String rightLable="";
	 Font sFont=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_SMALL);
	public void PaintFakeSoftKeys(Graphics g)
	{
	    g.setClip(0,0, 176, 208);
		g.setColor(0xFFFFFF);
		g.setFont(sFont);
		g.drawString(leftLable, 0, 208 - 15, 0);
		g.drawString(rightLable, 176,208 - 15,(Graphics.TOP | Graphics.RIGHT));
	}
	public void commandAction(Command c, Displayable d)
	{
		System.out.println("command pressed: ");
		int type = c.getCommandType();
		if(Command.BACK == type)
		{
			win.sendMessage(null, 0x0205, type, 0);
		}
		else if(Command.OK == type)
		{
			win.sendMessage(null, 0x0206, type, 0);
		}
		return;
	}
	/*protected void keyPressed(int keyCode)
	{
	    if(FrontEnd.m_iState<2){
	        win.sendMessage(null, 0x0201, Canvas.FIRE, 0);Basketball.hMenuWnd = new FrontEnd(4); 
	    }
		if(paused)
		{
			if(keyCode == KEY_POUND)
			{
				if(Basketball.hGameWnd == null)
				{
//					Basketball.Play(Basketball.pSndJingle, - 1);
				}
				paused = false;
				repaint();
			}
			return;
		}
		if(keyCode == KEY_SOFTKEY1)
		{	if(FrontEnd.m_iState==36||FrontEnd.m_iState==37||FrontEnd.m_iState==39||FrontEnd.m_iState==7||FrontEnd.m_iState==33)
			{
		    	win.sendMessage(null, 0x0205, 0, 0);
		    	return;
				
				}
			
		    if(FrontEnd.m_iState == 0 || FrontEnd.m_iState == 1 || FrontEnd.m_iState == 2 ||
				FrontEnd.m_iState == 3 || FrontEnd.m_iState == 4)
			{
				win.sendMessage(null, 0x0201, Canvas.FIRE, 0);
			}
			else
				win.sendMessage(null, 0x0206, 0, 0);
		}
		else if(keyCode == KEY_SOFTKEY2)
		{
			if((FrontEnd.m_iState > 4 || FrontEnd.m_iState < 0)&&FrontEnd.m_iState!=36&&FrontEnd.m_iState!=37&&FrontEnd.m_iState!=39&&FrontEnd.m_iState!=7&&FrontEnd.m_iState!=33)
			{
				win.sendMessage(null, 0x0205, 0, 0);
			}
		}
		else
		{
			if(keyCode == Canvas.KEY_NUM1 || keyCode == Canvas.KEY_NUM3 || keyCode == Canvas.KEY_POUND ||
				keyCode == Canvas.KEY_STAR)
				win.sendMessage(null, 0x0201, 0, keyCode);
			else
				win.sendMessage(null, 0x0201, getGameAction(keyCode), keyCode);
		}
		return;
	}*/
	protected void keyPressed(int keyCode)
	{
	    
	    if(FrontEnd.m_iState<2){
	        win.sendMessage(null, 0x0201, Canvas.FIRE, 0);//Basketball.hMenuWnd = new FrontEnd(4); 
	    }
		if(paused)
		{
			if(keyCode == KEY_POUND)
			{
				if(Basketball.hGameWnd == null)
				{
				//	Basketball.Play(Basketball.pSndJingle, - 1);
				}
				paused = false;
				repaint();
			}
			return;
		}
		if(keyCode == KEY_SOFTKEY1)
		{
		    if(win.focusWin!=null&&win.focusWin.winState==-1){
			    win.sendMessage(null, 0x0205, 0, 0);
			    return;
			}
			if(FrontEnd.m_iState == 0 || FrontEnd.m_iState == 1 || FrontEnd.m_iState == 2 ||
				FrontEnd.m_iState == 3 || FrontEnd.m_iState == 4)
			{
				win.sendMessage(null, 0x0201, Canvas.FIRE, 0);
			}
			else
				win.sendMessage(null, 0x0206, 0, 0);
		}
		else if(keyCode == KEY_SOFTKEY2)
		{
		    if(win.focusWin!=null&&win.focusWin.winState==-1)return;
		    if(FrontEnd.m_iState==5)return;
		    if(FrontEnd.m_iState > 4 || FrontEnd.m_iState < 0)
			{
				win.sendMessage(null, 0x0205, 0, 0);
			}
		}
		else
		{
			if(keyCode == Canvas.KEY_NUM1 || keyCode == Canvas.KEY_NUM3 || keyCode == Canvas.KEY_POUND ||
				keyCode == Canvas.KEY_STAR)
				win.sendMessage(null, 0x0201, 0, keyCode);
			else
				win.sendMessage(null, 0x0201, getGameAction(keyCode), keyCode);
		}
		return;
	}
	protected void keyReleased(int keyCode)
	{
		win.sendMessage(null, 0x0202, getGameAction(keyCode), keyCode);
		return;
	}
	protected void keyRepeated(int keyCode)
	{
		win.sendMessage(null, 0x0203, getGameAction(keyCode), keyCode);
		return;
	}
	public static void setUpdate(boolean state)
	{
		m_bUpdate = state;
	}
	public void stop()
	{
		m_bRunning = false;
	}
	public void exitApp()
	{
		m_pAppPtr.exitApp();
	}
	private static int timerCnt = 0;
	private static int freqs[]= new int[8];
	private static long lasts[]= new long[8];
	private static win dests[]= new win[8];
	public static void addTimer(win dest, int freq)
	{
		if(timerCnt >= 8)
			return;
		lasts[timerCnt]= System.currentTimeMillis();
		freqs[timerCnt]= freq;
		dests[timerCnt]= dest;
		timerCnt++;
		return;
	}
	public static void chkTimerEvents()
	{
		if(0 == timerCnt)
			return;
		long curTime = System.currentTimeMillis();
		for(int i = 0; i < timerCnt; i++)
		{
			long dif = curTime - lasts[i];
			if(dif > freqs[i])
			{
				dests[i].message(0x0204,(int)dif, freqs[i]);
				lasts[i]= curTime;
			}
		}
		return;
	}
	public static void killTimers(win dest)
	{
		for(int i = 0; i < timerCnt; i++)
		{
			if(dests[i]== dest)
			{
				int rem = timerCnt -(i + 1);
				if(rem > 0)
				{
					System.arraycopy(freqs, i + 1, freqs, i, rem);
					System.arraycopy(lasts, i + 1, lasts, i, rem);
					System.arraycopy(dests, i + 1, dests, i, rem);
				}
				i--;
				timerCnt--;
			}
		}
		return;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -