国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在J2ME中基于MIDP1.0實現組合按鍵

2019-11-17 06:00:30
字體:
來源:轉載
供稿:網友

  我們知道有些手機是不支持重復按鍵功能,為了模擬重復按鍵的功能,我們不得不使用一個線程來進行處理。對于重復按鍵網上已經有一些文章進行了探討,其實利用線程我們還可以實現組合按鍵的功能。當然,在手機這種設備上,利用組合按鍵進行游戲,有一定的限制,因為手機各個按鍵排列比較緊湊,同時按下兩個甚至三個按鍵在操作上會有局限性。但這也是仁者見仁、智者見智的問題,假如你想提高游戲的可玩性和娛樂性,組合按鍵仍是必不可少的條件。

  我定義了一個進行按鍵監聽的類,這個類實現了Runnable接口。在這個類里要害的一個數據結構就是一個字節型的數組,它是用來存儲當前所有被按下的鍵。我這里把數組的長度設定為2,主要是從應用的角度來考慮的,因為究竟在當前手機設備上同時按三個鍵進行游戲的不多。下面就是實現組合按鍵的核心代碼。

  按鍵事件類:

import javax.microedition.lcdui.*;

public class NewEvent implements Runnable{
 KeyEventCanvas c=null;

 /*
 * 用來判定是否有鍵被按下
 */
 PRotected boolean switchPoint;

 /*
 * 這個數組用來存儲所有同時被按鍵的鍵碼
 */
 protected byte[] keyCode;

 /*
 * 訪問數組的索引
 */
 byte index;

 public NewEvent(KeyEventCanvas c){
  this.c=c;
  keyCode=new byte[2];
 }

 /*
 * 這個方法把被按鍵的鍵碼存儲到數組中
 */
 public synchronized void startAction(int keyCode){
  this.keyCode[index]=(byte)keyCode;
  index=(byte)((index+1)%this.keyCode.length);
 }

 /*
 * 當某個鍵被釋放時,這個方法把該鍵存儲在數組中的鍵碼置為0
 */
 public synchronized void stopAction(int keyCode){
  for(int i=0;i<=this.keyCode.length-1;i++){
   if(this.keyCode[i]==(byte)keyCode){
    this.keyCode[i]=0;
    break;
   }
  }
 }

 /*
 * 這個方法用來判定是否有被按下的鍵,返回true表示有鍵按下,返回false表示沒有鍵被按下
 */
 public synchronized boolean getSwitchPoint(){
  this.switchPoint=false;
  for(int i=0;i<=this.keyCode.length-1;i++){
   if(this.keyCode[i]!=0){
    this.switchPoint=true;
    break;
   }
  }
  return this.switchPoint;
 }

 /*
 * 返回字節數組
 */
 public synchronized byte[] getKeyCode(){
  return this.keyCode;
 }

 public void run(){
  byte[] tmp=this.getKeyCode();
  while(true){
   while(this.getSwitchPoint()){
    /*
    * 通過這個循環遍歷數組,碰到被按下的鍵就進行處理
    */
    for(int i=0;i<=tmp.length-1;i++){
     if(tmp[i]!=0){
      switch(c.getGameAction(tmp[i])){
      case Canvas.UP:
       c.y--;//y是在Canvas中定義的一個屬性,表示y軸坐標
       break;
      case Canvas.DOWN:
       c.y++;
       break;
      case Canvas.LEFT:
       c.x--;//x是在Canvas中定義的一個屬性,表示x軸坐標
       break;
      case Canvas.RIGHT:
       c.x++;
      break;
     }
    }
   }
   c.repaint();
   try{
    Thread.sleep(10);
   }catch(InterruptedException e){}
  }
 }
}
}

  Canvas類:

import javax.microedition.lcdui.*;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宿松县| 休宁县| 裕民县| 潮安县| 陆川县| 苗栗县| 兴文县| 台中县| 芦溪县| 延庆县| 满洲里市| 读书| 新田县| 湖南省| 孝感市| 吉首市| 惠水县| 通州区| 祁阳县| 扶沟县| 汾阳市| 怀仁县| 金平| 台南县| 本溪市| 滨州市| 桐乡市| 小金县| 兰州市| 中超| 清丰县| 靖宇县| 淳安县| 定州市| 靖江市| 交口县| 景洪市| 勃利县| 和龙市| 平远县| 乌兰察布市|