J2ME學習筆記(六)

來源:互聯網
上載者:User

   低級交易處理

    

要處理低級事務或者進行螢幕畫圖,那麼我們必須要使用Canvas。一般要編寫手機遊戲也是需要Canvas來

製作,它提供了處理鍵盤,手寫筆以及遊戲的圖形處理功能。
   因為Canvas由Displayable繼承來的,所以具有addCommadn()方法,也可一和Commadn其他屬性配合組

成進階交易處理。Screen於Canvas有相同的特性,但是Screen允許開發人員自訂監聽器,但是Canvas不

允許。
   低級交易處理一般分兩種,一種來此鍵盤,一種就是手寫筆。
   首先我們來看看處理鍵盤的代碼
/**
 * @author You Li
 *
 * CopyRight (C) 2005
 */
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class LLEventMIDlet extends MIDlet {

 /**
  *
  */
 private Display display;
 public LLEventMIDlet() {
  display = Display.getDisplay(this);
 }

 /* (非 Javadoc)
  * @see javax.microedition.midlet.MIDlet#startApp()
  */
 protected void startApp() throws MIDletStateChangeException {
  // TODO 自動產生方法存根
  MyCanvas mc = new MyCanvas() ;
  display.setCurrent(mc) ;
 }

 /* (非 Javadoc)
  * @see javax.microedition.midlet.MIDlet#pauseApp()
  */
 protected void pauseApp(){
  // TODO 自動產生方法存根
 }

 /* (非 Javadoc)
  * @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
  */
 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO 自動產生方法存根
 }
 class MyCanvas extends Canvas{
  String action = "" ;
  public void paint(Graphics g){
  // 清除螢幕
   g.setColor(255,255,255) ;
   g.fillRect(0,0,getWidth(),getHeight()) ;
   g.setColor(0,0,0) ;
  // 檢查是否支援長按鍵行為
   if(hasRepeatEvents()){
    g.drawString("Repeat",10,10,0) ;
   }else{
    g.drawString("NonRepeat",10,10,0) ;
   }
   g.drawString(action,10,20,0) ;
  }
  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();
  }
 }

}
   這個程式將會響應手機的鍵盤行為,然後將點擊的鍵盤所對應的索引值顯示出來。從這個程式中我們可

以發現當Canvas子類成為正在響應的畫面的時候只要點擊鍵盤就會引發keyPressed()方法。鬆開的時候會

響應keyReleased()方法。而支援長按鍵響應的方法則是keyRepeated()方法(這個方法並不是所有的機器

都支援,比方說N記的6110我以前用的時候就沒有這個響應產生。所以必須要判斷一下。而判斷是否支援

長按鍵響應的方法是hasRepeatEvents())。KEY_NUM0~~KEY_NUM9,以及KEY_STAR、KEY_POUND是所有機器

都支援的常數,而根據裝置的不同也會有不同的其他對應值。為了程式能夠跨平台(呵呵,這可是java的

最大優勢之一哦),在開發的時候不到特殊情況最好只使用這幾個常規鍵盤響應。當然,為了遊戲設計的

方便,在MIDP中Canvas定義了幾個Game鍵盤代碼:UP

,DOWN,LEFT,RIGHT,FIRE,GAME_A,GAME_B,GAME_C,GAME_D。同時定義了getGameAction()以及getKeyCode()

兩個方法。來處理相關的行為轉化。
   
   手寫筆控制事件處理,由於俺沒有相關裝置也沒有下模擬器,所以就沒有仔細的研究,大概的看了一

下幾個比較重要的東西。手寫筆點擊螢幕,引發pointerPressed()方法,並傳入點擊點在螢幕上的x,y坐

標。pointerReleased()則在手寫筆離開螢幕的時候響應。而pointerDragged()則是手寫筆在螢幕上的移

動時響應的方法,同時會產生相應的x,y座標。如果我們開發程式需要跨平台,支援在響應手寫筆事務處

理之前必須要使用hasPointerEvents()來判斷裝置是否支援手寫筆。hasPointerMotionEvents()則會判斷

是否支援手寫筆在螢幕上移動產生pointerDragged()方法。

   當然,還有繪圖處理以及呼叫處理。。。實在是怕自己一下下接受不了那麼多概念。。。呵呵,準備

休息一下。這幾天好好的把自己前幾天看的東西再看看。溫故而知新嘛^_^

============================================

    最後想說說,因為這段時間看我寫這個筆記的朋友也很多,但是總是沒有人回應。讓我覺得鬱悶,我

只是希望能起到一個拋磚引玉的作用,希望更多的兄弟一起來學習,共同提高,也來幫幫小弟一下。。呵

呵。。。希望大家留個言哦。。^_^

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.