如何處理Java中的同時按鍵?如何處理Java中的同時按鍵?
我想寫一個遊戲,需要一次處理多個按鍵。
當我按住一個按鍵(假設向前移動),然後按住另一個按鍵(例如,向左轉動)時,會檢測到新按鍵,但舊按鍵不再被檢測到。
如何處理Java中的同時按鍵?如何處理Java中的同時按鍵?
我想寫一個遊戲,需要一次處理多個按鍵。
當我按住一個按鍵(假設向前移動),然後按住另一個按鍵(例如,向左轉動)時,會檢測到新按鍵,但舊按鍵不再被檢測到。
一種方法是跟蹤自己正在關閉哪些鍵。
當您得到keyPressed事件時,將新密鑰添加到列表中;當您收到keyreleased事件時,請從列表中刪除密鑰。
然後在您的遊戲循環中,您可以根據鍵列表中的內容執行操作。
這似乎並不是什麼黑客行爲。 (很明顯,關注焦點有一些小問題 - 我猜想所有的焦點都在獲得/失去。) – 2009-04-15 18:39:29
@MichaelMyers你是如何解釋鍵重複的,如果我按住一個鍵就像一個pryamid一樣:a | a,a | a,a,a | a,a,a,a | a,a,a | a,a |一個 – KisnardOnline 2012-08-03 14:58:41
一般而言,您所描述的內容可以使用bitmasks來實現。
下面是說明如何在按下CTRL + Z執行動作的代碼示例:
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
class p4 extends Frame implements KeyListener
{
int i=17;
int j=90;
boolean s1=false;
boolean s2=false;
public p4()
{
Frame f=new Frame("Pad");
f.setSize(400,400);
f.setLayout(null);
Label l=new Label();
l.setBounds(34,34,88,88);
f.add(l);
f.setVisible(true);
f.addKeyListener(this);
}
public static void main(String arg[]){
new p4();
}
public void keyReleased(KeyEvent e) {
//System.out.println("re"+e.getKeyChar());
if(i==e.getKeyCode())
{
s1=false;
}
if(j==e.getKeyCode())
{
s2=false;
}
}
public void keyTyped(KeyEvent e) {
//System.out.println("Ty");
}
/** Handle the key pressed event from the text field. */
public void keyPressed(KeyEvent e) {
System.out.println("pre"+e.getKeyCode());
if(i==e.getKeyCode())
{
s1=true;
}
if(j==e.getKeyCode())
{
s2=true;
}
if(s1==true && s2==true)
{
System.out.println("EXIT NOW");
System.exit(0);
}
}
/** Handle the key released event from the text field. */
}
詳情請!你想做什麼? – 2009-04-15 18:15:49
不好的問題,你需要更多的細節:爲什麼環境?搖擺? AWT? 「處理」是什麼意思? – 2009-04-15 18:19:01