在J2ME程序的開發過程中,經常需要接受用戶的輸入,而所有這些的輸入都是通過手機鍵盤進行的,下面介紹一下在使用的時候需要注意的問題。
在高級用戶界面開發中,只能使用功能鍵來控制Command按鈕,這些都是一些固定的模式,例如手機顯示兩個Command的話,分別對應屏幕上的左右兩個Command,不需要用戶去處理鍵值,所以不存在移植的問題,在所有的手機上都是通用的。
但是在低級用戶界面開發中,可以直接獲得手機的鍵值(keyCode),因為不同的手機中按鍵的鍵值存在差別,所以就存在移植的問題了。
在手機鍵盤上,可以簡單的分為功能鍵區域和數字鍵區域,功能鍵指手機上的左右軟鍵,中間的導航鍵以及接聽電話和掛機鍵等,數字鍵區域指手機鍵盤上的0-9數字鍵以及*號和#號鍵。其中功能鍵的個數以及鍵值,不同的手機區別很大,而數字鍵的區域的按鍵個數,以及按鍵的鍵值都是一樣的。
所以在游戲中為了使程序通用,一般都不直接使用鍵值來進行判斷,而是用游戲動作(gameAction)來進行判別的:實現的代碼如下:
//將keyCode轉換為游戲動作
int action = getGameAction(keyCode);
其中,keyCode和游戲動作的對應關系如下:
Canvas.UP——數字鍵2和向上導航鍵
Canvas.DOWN——數字鍵8和向下導航鍵
Canvas.LEFT——數字鍵4和向左導航鍵
Canvas.RIGHT——數字鍵6和向右導航鍵
Canvas.FIRE——數字鍵5和確定導航鍵
Game_A、Game_B、Game_C、Game_D分別對應鍵盤上的1、3、7、9或者是7、9、*、#鍵。
經過上面的轉換以後,代碼實現就和手機鍵盤上的鍵值無關了。
另外,如果是Nokia系列的手機,還可以使用com.nokia.mid.ui.FullCanvas類裡面的SOFTKEY1、SOFTKEY2來控制Nokia系列手機上的左右兩個軟鍵,做到這兩個軟鍵的處理通用。