Java KeepPushing按键游戏监听器
我做了一个游戏,船在移动,就像我想移动他一样。但我的问题是当我按下按钮时。我的船正在移动,但他必须等1秒钟才能开始以正确的方式移动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
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”之间有很大区别。这就是为什么我的飞船停了一段时间,当我想按下任何键几秒钟,但我不知道如何改变时间之间的差异