📄 bhcanvas.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 + -