Java KeepPushing按键游戏监听器

Java KeepPushing按键游戏监听器,java,awt,keylistener,Java,Awt,Keylistener,我做了一个游戏,船在移动,就像我想移动他一样。但我的问题是当我按下按钮时。我的船正在移动,但他必须等1秒钟才能开始以正确的方式移动 public void keyPressed(KeyEvent e) { int jakiPrzycisk = e.getExtendedKeyCode(); if(jakiPrzycisk == 39 ) { kierunek="prawo"; czyRuch = true; } if(jak

我做了一个游戏,船在移动,就像我想移动他一样。但我的问题是当我按下按钮时。我的船正在移动,但他必须等1秒钟才能开始以正确的方式移动

public void keyPressed(KeyEvent e) {
    int jakiPrzycisk = e.getExtendedKeyCode();
    if(jakiPrzycisk == 39 )
    {
        kierunek="prawo";
        czyRuch = true;
    }
    if(jakiPrzycisk == 37)
    {
        kierunek="lewo";
        czyRuch = true;

    }
    if(jakiPrzycisk == 38)
    {
        kierunek="gora";
        czyRuch = true;

    }
    if(jakiPrzycisk == 40)
    {
        kierunek="dol";
        czyRuch = true;

    }
在比赛中,我检查他是否会用“齐鲁克”移动,我用“基鲁内克”移动方向正确。有一种方法可以从keybord快速读取数据吗

不要使用“幻数”。37、38、39、40对任何阅读你的代码的人来说都毫无意义

但我的问题是当我按下按钮时。我的船正在移动,但他必须等1秒钟才能开始以正确的方式移动

public void keyPressed(KeyEvent e) {
    int jakiPrzycisk = e.getExtendedKeyCode();
    if(jakiPrzycisk == 39 )
    {
        kierunek="prawo";
        czyRuch = true;
    }
    if(jakiPrzycisk == 37)
    {
        kierunek="lewo";
        czyRuch = true;

    }
    if(jakiPrzycisk == 38)
    {
        kierunek="gora";
        czyRuch = true;

    }
    if(jakiPrzycisk == 40)
    {
        kierunek="dol";
        czyRuch = true;

    }
那么您就有一个没有发布的代码问题。Java将立即响应KeyEvent


但是,如果按住键,则重复事件会有“延迟”。此延迟取决于操作系统。如果您需要处理重复事件的能力,那么您应该使用自己的
计时器来安排这些事件。查看更多关于这个主题的想法以及工作代码。

是的,很抱歉这是我的错误。现在我可以给你举一个我遇到问题的例子

这里有一个示例代码

public class KeyTest extends JFrame implements KeyListener {


long start;
long end;
public KeyTest() {
    super("KeyListener Test");
    setPreferredSize(new Dimension(300, 100));
    addKeyListener(this);
    start = System.nanoTime();;

    pack();
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

@Override
public void keyPressed(KeyEvent evt) {
    end = System.nanoTime();;

    char c = evt.getKeyChar();
    System.out.print(c+" ");
    System.out.println(end-start);
}

@Override
public void keyReleased(KeyEvent evt) {

}

@Override
public void keyTyped(KeyEvent evt) {

}
}

当我按下任何键时,例如“s”。我有一个

s 810407913
s 1312851842
s 1344314575
s 1377971356
s 1409969550
s 1441512603
s 1475051136
s 1507228263
第一个和第二个“s”之间有很大区别。这就是为什么我的飞船停了一段时间,当我想按下任何键几秒钟,但我不知道如何改变时间之间的差异