J2ME開發筆記-鍵盤響應
不同的機型對於鍵盤事件的響應不一樣。經過我的測試,Nokia 7210,3100一次只能接受一個按鍵信息。(我寫了個測試程序,發現如果一個鍵被按下後沒有松開,則KeyPressed事件不會再產生,即其他鍵的按下操作無效)所以,用緩沖處理控制精靈運動時,如果規定只能四方向運動。如果up已按下,再按下left,精靈的運動方向並不會改變。不過將按鍵緩沖。按下up,按下left不釋放,松開up---精靈就會向左運動。(在松開up後產生了left的KeyPressed事件!奇怪嗎?松開up後我並沒有進行"按下"left這個動作--left鍵在up松開前就被按下了且沒有松開。似乎機器一直在監測鍵盤上各鍵的狀態,並且有一個等待隊列。)
在wtk的標准模擬器上就不同了。它可以接受多個按鍵“同時”按下的事件。所以如果用四個並列的if處理,精靈是可以斜著運動的。如果用if else處理,則如果已經按下一個方向鍵,然後再按下另一個,是否能改變方向受到if else 語句中順序的影響。即,如果是 if(up) else if(left),則會先檢查up鍵,所以如果已經按下了left,再按up是可以向上運動的,反過來就不行了。(這個自然:)
其它的機型由於手頭沒有機器,我也沒試過。應該也是如此吧。