konhon

忘掉過去,展望未來。找回自我,超越自我。
逃避不一定躲的过, 面对不一定最难过, 孤单不一定不快乐, 得到不一定能长久, 失去不一定不再拥有, 可能因为某个理由而伤心难过, 但我却能找个理由让自己快乐.

Google

BlogJava 首页 新随笔 联系 聚合 管理
  203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class LLEventMIDlet extends MIDlet {
    
private Display display;

    
public LLEventMIDlet() {
        super();
        display 
= Display.getDisplay(this);
        
// TODO Auto-generated constructor stub
    }


    
protected void startApp() throws MIDletStateChangeException {
        
// TODO Auto-generated method stub
        MyCanvas mc = new MyCanvas();
        display.setCurrent(mc);
    }


    
protected void pauseApp() {
        
// TODO Auto-generated method stub

    }


    
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
        
// TODO Auto-generated method stub

    }


    
private class MyCanvas extends Canvas {
        String action 
= "";

        
public void paint(Graphics g) {
            g.setColor(
255255255);
            g.fillRect(
00, getWidth(), getHeight());
            g.setColor(
000);
            
if (hasRepeatEvents()) {
                g.drawString(
"Repeat"10100);
            }
 else {
                g.drawString(
"NonRepeat"10100);
            }

            g.drawString(action, 
10200);
        }

        
protected void keyPressed(int keyCode){
            action 
= "KP: " + (char)keyCode;
            repaint();
        }

        
protected void keyReleased(int keyCode){
            action 
= "KR: " + (char)keyCode;
            repaint();
        }

        
protected void keyRepeated(int keyCode){
            action 
= "KRe: " + (char)keyCode;
            repaint();
        }

    }


}



在MIDP 1.0 規格中,Canvas 類別裡頭定義了幾個常數,他們分
別是: KEY_NUM0 、KEY_NUM1 、KEY_NUM2 、KEY_NUM3 、KEY_NUM4 、KEY_NUM5 、KEY_NUM6 、KEY_NUM7 、KEY_ NUM8 、KEY_NUM9 、KEY_STAR、KEY_POUND 共11 個,分別代表0~9 的數字鍵、星號鍵、以及井號鍵。我們可以利用這幾個常數判定鍵盤(按鈕)事件處理函式所傳進來的keyCode,藉以了解哪個按鈕被按下了,當然,除了這些按鍵之外,其他的按鍵也會有其對應值,您必須自己嘗試找出來,但是為了可以跨平台,建議您僅只使用這些標準的定義鍵。

為了Game 設計師的方便,MIDP 1.0 規格中,Canvas 類別裡頭定義了幾個與Game 鍵盤代碼相關的常數,他們分別是UP、DOWN、LEFT、RIGHT、FIRE、GAME_A、GAME_B、GAME_C、GAME_D。這些定義雖然很可能會和之前的定義有所重複,但是因為有了一層抽象性,在移植的時候也就方便多了。

那麼,在程式裡頭該如何處理呢? Canvas 裡頭提供了兩個函式:
1. getGameAction() 􀂌 傳入keyCode,函式會回傳所代表的
Game 鍵盤代碼。
用法如下:
public void keyPressed(int keyCode)
{
switch(getGameAction(keyCode))
{
case Canvas.LEFT:
moveLeft() ;
break ;
case Canvas.FIRE:
fire() ;
break ;

}

}


2. getKeyCode() 􀂌 傳入Game 鍵盤代碼,函式會回傳所代表的
keyCode。
用法如下:
public void keyPressed(int keyCode)
{
if(keyCode == getKeyCode(Canvas.LEFT))
{
moveLeft() ;
}
else if(keyCode == getKeyCode(Canvas.FIRE))
{
fire() ;
}


}
任選任何一種方法,都可以達到跨平台的目的。
posted on 2005-09-01 04:19 konhon 优华 阅读(967) 评论(0)  编辑  收藏 所属分类: J2me

只有注册用户登录后才能发表评论。


网站导航: