眾所周知,當今大部分智能手機是沒有物理鍵盤的,在使用cocos開發Android應用時,自然也就不會去注意不必要的鍵值的注冊,然而有些時候,我們需要游戲具有高精度的操控體驗,就會用到鍵盤,然而當我們在PC平臺上敲好了KEY_W/A/S/D時,卻發現這些鍵在Android平臺上無法使用,這就很尷尬了,
經過個人探索,我發現發生這種情況主要是由兩方面引起的:
一,PC鍵盤上的鍵值不能夠和Android手機外接鍵盤后對應的鍵值相對應,
二,Android設備并不知道我們需要它監控那些鍵,即外接鍵盤上的按鍵是沒有在應用中進行注冊的,
知道了這兩個原因,我們就能比較明確地找到問題的解決辦法,
首先是PC和Android的溝通,打開cocos2d\cocos\platform\android\jni\TouchesJni.cpp檔案,通過檔案夾名和檔案名我們可以知道這個檔案是關于Android設備人機互動的(大概),我們會看到這樣的東西,

我們可以推測這是一個類似于兩個平臺溝通鍵值的地方,前者是Android平臺對應的鍵值(實際上KEYCODE_**正是awt下KeyEvent中KeyCode的表達方式),在java中我們可以列印這些鍵值,發現KEYCODE_BACK的鍵值恰好是0x04,同時,在方法體中的后者又恰好是我們在Visual Studio中使用的鍵值名稱,了解了這一點后要解決這一問題并不難,更改后如下:

這樣就解決了PC和Android鍵值交接的任務,
第二個問題則是將我們要使用的鍵在應用中進行簡單的注冊,打開cocos2d\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxGLSurfaceView.java可以找到很顯眼的兩個方法:

這幾個是已經注冊的鍵,所以我們需要再添加幾個要使用的鍵進去,如下:

當然為了防止會出現各種問題我們最好在onKeyDown和onKeyUp方法中同時添加需要的鍵,
至此,Android平臺可以正常使用外接鍵盤操縱游戲,
需要注意到第二個問題修改的的.java檔案是不會在編譯時自動更改的,所以需要到eclipse或Android studio下找到相應的檔案進行修改,
有問題請掃碼qq群:
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/224823.html
標籤:其他
上一篇:2020-11-18
