天天看點

第八章 Libgdx輸入處理(3)輸入裝置

Android遊戲開發群:290051794

Libgdx遊戲開發架構交流群:261954621 

簡介

在Android中,Libgdx支援的主要輸入裝置為觸摸屏和鍵盤。由于現在大部分Android裝置不再配備鍵盤,是以這裡我們隻讨論觸摸屏。

觸摸操作

觸摸輸入機制可以确定你的點選的螢幕的位置,螢幕的左上角為原點。X軸指向右邊,y軸指向螢幕下邊。

觸摸沒有按鈕的概念。依靠硬體的支援可以同時響應多個觸摸操作。第一代的Android手機僅僅支援單點觸摸。從Motorola Droid開始,多點觸摸成為Android手機的标準特性。

需要注意的是,觸摸操作在不同的裝置上實作的方式不同。當觸摸事件激活時,這會影響指針索引的指定和釋放。是以,要盡可能多的在不同的裝置上測試你的控制方案。

輸入輪詢

輪詢是指檢查目前輸入裝置的狀态,例如,當你的按下特定的按鍵時,确定你的第一個手指在螢幕上的位置。

警告:如果你過分依賴輪詢,你可能會錯過事件。

觸摸屏輪詢

檢測手指是否觸摸了螢幕,可以用以下語句:

對于多點觸摸來說,可以使用以下語句:

每個手指的觸摸操作會獲得一個指針索引。第一個手指按下擷取index0,下一個為index1等等。如果一個手指從螢幕上釋放,再次觸摸,其他的手指仍然在螢幕上,那麼第一個指針索引将被釋放。

第一個手指按下 -> 0

第二個手指按下-> 1

第三個手指按下> 2

第二個手指釋放 -> 1被釋放

第一個手指釋放 -> 0被釋放,

這時隻有2被使用

其他手指按下 -> 0,這是第一個被釋放的那個索引

如果你想檢測使用者是否觸摸或釋放任何手指,可以使用如下方法:

這點可以用在你想檢測螢幕是否按下或釋放時。比如在螢幕上顯示“觸摸繼續”,注意這不是可靠的方法,因為它基于輪詢。

擷取一個特定手指的坐标,可以用以下方法:

這裡我們擷取的是指針索引0(0是預設的)和1的觸摸坐标,坐标是基于螢幕的。原點在螢幕左上角。

事件處理

事件處理允許你擷取更多的細節。事件處理提供了一種實作與使用者接口互動的方法,但有一定的輸入順序。比如,按下和釋放構成一個點選事件。這樣的互動很難用輪詢實作。

輸入處理

首先要實作一個偵聽器接口:

TouchDown():當手指按下螢幕時觸發,傳回坐标和指針索引。

touchUp():當手指釋放螢幕時觸發,傳回坐标和指針索引。

touchDragged():當手指在螢幕拖動時觸發,傳回坐标和指針索引。

每個方法會傳回一個布爾值。

必須通知libgdx以便它可以處理輸入事件。

這時,所有的輸入事件都在MyInputProcessor()的執行個體處理。

在rendering線程調用ApplicationListener.render()之前處理事件。

注意:隻有很少的Android裝置具有實體鍵盤,是以,上面的傳回值可能為false。

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。 

繼續閱讀