在Java中如何处理同时按键?
在Java中如何处理同时按键 我正在尝试编写一个游戏,需要同时处理多个按键在Java中如何处理同时按键?,java,events,keyboard,Java,Events,Keyboard,在Java中如何处理同时按键 我正在尝试编写一个游戏,需要同时处理多个按键 当我按住一个键(比方说向前移动)然后按住另一个键(例如向左转弯)时,会检测到新键,但不再检测到旧键。一种方法是跟踪自己当前按下的键 当您获得按键事件时,将新按键添加到列表中;当您获得keyReleased事件时,请从列表中删除该密钥 然后,在游戏循环中,您可以根据按键列表中的内容执行操作。一般来说,您所描述的内容可以通过使用来实现。下面是一个代码示例,演示了在按下CTRL+Z时如何执行操作: import java.aw
当我按住一个键(比方说向前移动)然后按住另一个键(例如向左转弯)时,会检测到新键,但不再检测到旧键。一种方法是跟踪自己当前按下的键 当您获得按键事件时,将新按键添加到列表中;当您获得keyReleased事件时,请从列表中删除该密钥
然后,在游戏循环中,您可以根据按键列表中的内容执行操作。一般来说,您所描述的内容可以通过使用来实现。下面是一个代码示例,演示了在按下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. */
}
请提供更多详细信息!你们想做什么?糟糕的问题,你们需要更多的细节:为什么是环境?摆动AWT?你说的“把手”是什么意思?那似乎没那么老套。(显然,在聚焦方面存在一些小问题——我猜这一切都取决于获得/失去聚焦。)@MichaelMyers你如何解释重复的键,如果我按住一把键,它会像撬棍一样从侧面移动:a | a,a | a,a,a,a,a,a,a,a,a,a,a|a@JayAvon当前位置:我认为这值得提出一个新问题。@MichaelMyers是新问题的链接。任何帮助都是难以置信的。我建议使用位集而不是键列表Janusz是什么意思?这不仅仅是相关的。是的,它与Java无关,但这并不意味着它有帮助。但是如果其他键必须是非修改键呢?比如说,在屏幕和拍摄空间中移动精灵的方向键?你希望能够在移动时拍摄