gpt4 book ai didi

java - 为什么在多键组合过程中某些按键没有被捕获?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:45 27 4
gpt4 key购买 nike

是键盘限制问题吗?

我在试用一些代码时遇到了问题。想象一个自上而下的太空射击游戏。我遇到的问题是,在我的电脑上,当我按住向上和向左箭头时,我无法射击(空格键)。任何其他方向(上、下、左、右、上+右、右+下、左+下)都可以。我有一个 friend 在他的计算机上运行代码,他发现除了向上 + 向右和向右 + 向下之外,所有方向都可以工作,但是向上 + 向左对他来说工作正常。我们都看了代码,都想不通。这可能是硬件问题吗?

基本上,这就是我正在做的:

import javax.swing.*;
import java.awt.event.*;

public class Test extends JFrame
{
boolean up, down, left, right, fire;

// Main constructor
public Test()
{
// listeners for user input
this.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
switch (e.getKeyCode())
{
case KeyEvent.VK_UP:
{
up = true;
break;
}

case KeyEvent.VK_LEFT:
{
left = true;
break;
}

case KeyEvent.VK_RIGHT:
{
right = true;
break;
}

case KeyEvent.VK_DOWN:
{
down = true;
break;
}

case KeyEvent.VK_SPACE:
{
fire = true;
break;
}

case KeyEvent.VK_ESCAPE:
{
// Exit
System.exit(0);
}
}
}

public void keyReleased(KeyEvent e)
{
// Upon releasing key, stop direction
switch(e.getKeyCode())
{
case KeyEvent.VK_UP:
{
up = false;
break;
}

case KeyEvent.VK_LEFT:
{
left = false;
break;
}

case KeyEvent.VK_RIGHT:
{
right = false;
break;
}

case KeyEvent.VK_DOWN:
{
down = false;
break;
}
}
}
});
}

public static void main(String[] args)
{
// create frame
Test test = new Test();
test.setLocationRelativeTo(null);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
test.loop();
}

public void loop()
{
Timer timer = new Timer(250, new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (up)
System.out.println("Moving UP.");
if (left)
System.out.println("Moving LEFT.");
if (right)
System.out.println("Moving RIGHT.");
if (down)
System.out.println("Moving DOWN.");
if (fire)
{
System.out.println("FIRING.");
fire = false;
}
}
});

timer.start();
}
}

这个问题最初是被问到的here .

最佳答案

是的,这看起来像是硬件限制。您可以尝试检查它在其他程序中是否表现相同,如果是,则肯定是硬件问题。

键盘有这些限制,请参阅 Rollover (key) .

关于java - 为什么在多键组合过程中某些按键没有被捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8759138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com