2015-06-07 29 views
0

有沒有辦法處理keydown只是一個點擊而不是一個長按libgdx keydown?它與手勢檢測器有什麼關係? 澄清,我的問題是有關鍵盤事件,不要觸摸和鼠標事件libgdx keyDown區分長按和短按

+0

那麼,你需要定義什麼是「長按」?它是第二個嗎?甚至更長?區分它們的一種可能的方法是將鍵盤上的當前時間存儲下來,並在keyUp方法中計算一個增量。如果這個增量大於那個「長按」所需的增量,它就是一個長按。相反,手勢檢測是關於觸摸屏上的輸入,就我所知。它被用來檢測f.e.幻燈片等 – Springrbua

+0

這非常有道理,謝謝! –

回答

0

GestureDetector僅用於觸摸和鼠標事件。
要區分短按鍵和長按鍵,您可以實現您自己的InputProcessor,它將當前時間存儲在keyDown方法中的變量(keyDownTime?)中,並計算keyDownTime與當前時間之間的delta
如果計算得出的delta比較大,那麼這個三角洲需要是一個「長按」,那麼關鍵詞evnet是一個長按,否則就是短按。
如果您的InputProcessor應該能夠檢測多個按鍵的長按和短按,則可以存儲IntMap<int, long>,其中int keykeyCodelong valuekeyDownTime
使用keyCodekeyDownputkeyDownTime並在keyUpgetkeyDownTime,然後計算delta,你知道,如果它是一個長按或不。

0

是的,有一種方法,是的,它是通過Gesture-detector完成。在constructor(參數longPressDuration)中創建對象時,可以將您定義的內容設置爲「長按」。例如,

Gdx.input.setInputProcessor(new GestureDetector(20, 0.4f, 1.1f, 0.15f, new MyGestureListener())); 

將設置一個新GestureDetector作爲輸入處理器與「長按」大於1.1秒(第三個參數)定義爲任何按更長。在MyGestureListener內部,您將通過覆蓋longPress方法來定義在發生長按事件時要發生的情況。

+0

但這不是關於touchInput的嗎?用戶改爲想要檢測長按鍵。 'GestureDetector'是否有一些方法可以實現? – Springrbua

+0

@Springrbua你是正確的,'GestureDetector'用於觸摸/鼠標事件。我以爲OP詢問了鼠標輸入,因爲他使用了「單擊」這個詞,這聽起來像是鼠標事件。 – asherbar

+0

我的意思是鍵盤事件,而不是觸摸和鼠標事件,對於混淆抱歉。 –