輪詢是指檢查輸入設(shè)備的當(dāng)前狀態(tài),例如特定的鍵被按下交排,屏幕上的第一個(gè)手指在何處等等也切。這是一種處理用戶輸入的快速簡便的方法扑媚,足以滿足大多數(shù)街機(jī)游戲的需要。
注意:如果你依靠投票雷恃,你可能會(huì)錯(cuò)過一些事件疆股,比如一個(gè)快節(jié)奏的按鍵的按下/松開。如果需要確保特定的完整的輸入操作序列倒槐,請(qǐng)使用 事件處理 event handling代替旬痹。
輪詢鍵盤的輸入事件僅需要以下的代碼:
boolean isAPressed = Gdx.input.isKeyPressed(Keys.A);
傳遞給該方法的參數(shù)是一個(gè)物理按鍵的關(guān)鍵代碼。你不需要記住這個(gè)代碼讨越,LibGDX有個(gè)專門的靜態(tài)類保存了所有你可能會(huì)用到的關(guān)鍵代碼两残。
輪詢觸摸屏和鼠標(biāo)
關(guān)于觸摸屏/鼠標(biāo)的輪詢有很多方法。要檢查屏幕上是否有一個(gè)或多個(gè)手指(相當(dāng)于按下鼠標(biāo)按鈕)把跨,您可以執(zhí)行以下操作:
boolean isTouched = Gdx.input.isTouched();
對(duì)于多點(diǎn)觸摸輸入人弓,您可能感興趣的是屏幕上是否有特定的手指(指針):
// Will Return whether the screen is currently touched
boolean firstFingerTouching = Gdx.input.isTouched(0);
boolean secondFingerTouching = Gdx.input.isTouched(1);
boolean thirdFingerTouching = Gdx.input.isTouched(2);
屏幕上的每一個(gè)手指都有一個(gè)指針?biāo)饕5谝粋€(gè)向下的手指得到索引0着逐,下一個(gè)得到索引1等崔赌。如果一個(gè)手指從屏幕上抬起并向下觸摸,當(dāng)其他手指仍在屏幕上時(shí)耸别,手指將得到第一個(gè)自由指數(shù)健芭。一個(gè)例子:
- 第一個(gè)手指被按下 -->0
- 第二個(gè)手指被按下 -->1
- 第三個(gè)手指被按下 -->2
- 第二個(gè)手指被釋放 -->1 被釋放
- 第一個(gè)手指被釋放 -->0 被釋放
- 新的手指被按下 --> 0被再次分配
當(dāng)然在 桌面應(yīng)用或者瀏覽器應(yīng)用上,你沒辦法進(jìn)行多點(diǎn)觸摸.
如果你想確認(rèn) 用戶是否觸摸屏幕,使用以下方法:
// Will return whether the screen has just been touched
boolean justTouched = Gdx.input.justTouched();
這可以在你想要快速檢查一個(gè)觸摸/停止序列的情況下使用秀姐,例如在屏幕上顯示“觸摸屏繼續(xù)”吟榴。注意,它不是一種可靠的方法囊扳,因?yàn)樗腔谳喸兊摹?/p>
要獲得特定手指的坐標(biāo)吩翻,可以使用以下方法:
int firstX = Gdx.input.getX();
int firstY = Gdx.input.getY();
int secondX = Gdx.input.getX(1);
int secondY = Gdx.input.getY(1)
在這里,我們得到指針?biāo)饕?(默認(rèn)值為0)和指針?biāo)饕?的觸摸坐標(biāo)锥咸。坐標(biāo)采用笛卡爾坐標(biāo)系狭瞎。原點(diǎn)(0, 0)在屏幕的左上角,x軸指向右邊搏予,y軸指向下方熊锭。
鼠標(biāo)按鍵
在桌面應(yīng)用上,你還可以監(jiān)測當(dāng)前被按下的鼠標(biāo)按鍵:
boolean leftPressed = Gdx.input.isButtonPressed(Input.Buttons.LEFT);
boolean rightPressed = Gdx.input.isButtonPressed(Input.Buttons.RIGHT);
你可以在Buttons類中獲取更多的常量信息.
注意雪侥,在Android系統(tǒng)上碗殷,我們認(rèn)為只有鼠標(biāo)左鍵。任何觸摸事件將被解釋為鼠標(biāo)左鍵被按下速缨。觸摸屏顯然沒有左锌妻、右、中按鈕的概念旬牲。