簡體   English   中英

如何在Java的KeyEvent中更新當前的keyPressed?

[英]How do I update the current keyPressed in a KeyEvent for java?

如果有人可以幫助我編寫代碼,我將非常感激,我在開發游戲時正在學習代碼。

  • 我正在嘗試使基本PONG游戲上的控件感覺平滑,但是keyEvent / keyPressed出現了此問題。 我使用A向左走,D向右走,當我按住D然后按A時,不放開D就會注意到更改並向左走,但是一旦我放開A並仍然按住D放開,keyEvent不會注意到D處於按下狀態,這使得球拍不會移動,直到您再次按D為止。 有沒有辦法告訴keyEvent或keyPressed更新當前發生的事情並對之做出反應?

這是代碼的片段... ps我是堆棧溢出的新手,而不是我仍在學習的熟練的Java程序員。 很抱歉,如果我的問題很模糊或不確定,... move(1)使球拍的坐標移動x + = 1和move(-1)x- = 1 * /

修復嘗試#1:
進行更改后,我嘗試使用return語句,希望它能奏效,但是沒有結果...

public void keyPressed(KeyEvent e) {
    //MOVE LEFT
    if (e.getKeyCode() == KeyEvent.VK_A){               
        if(e.getKeyCode() == KeyEvent.VK_D){
            move(1);
            //maybe update?
            return;
        }                           
        else
            move(-1);           
    }       
    //MOVE RIGHT
    if (e.getKeyCode() == KeyEvent.VK_D){                   
        if(e.getKeyCode() == KeyEvent.VK_A) {
            move(-1);
            //maybe update?
            return;
        }
        else
            move(1);
    }               
}

處理這種情況的最佳方法是創建一個布爾數組並將所有值存儲在其中,然后在以后使用。 這樣可以使更新的處理更加順暢,並讓您有更多的組織空間。 在頂部類型創建數組

public static boolean[] keys = new boolean[999];

然后在新聞方法中

public void keyPressed(KeyEvent e) {
    keys[e.getKeyCode()] = true;
}

最后是釋放方法

public void keyReleased(KeyEvent e) {
    keys[e.getKeyCode()] = false;
}

然后稍后引用即可使用

[class].keys[KeyEvent.[key]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM