在高級用戶界面開發中,只能應用功效鍵來把持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、*、#鍵。
經過上面的轉換以後,代碼實現就和手機鍵盤上的鍵值無關了。
另外,假如是諾基亞系列的手機,還可以應用com.nokia.mid.ui.FullCanvas類裡面的SOFTKEY1、SOFTKEY2來把持諾基亞系列手機上的左右兩個軟鍵,做到這兩個軟鍵的處理通用。