Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按键输入不能平滑地移动图像_Java_Image_Swing_Keylistener - Fatal编程技术网

Java 按键输入不能平滑地移动图像

Java 按键输入不能平滑地移动图像,java,image,swing,keylistener,Java,Image,Swing,Keylistener,按键输入工作,但同时按下两个以上按键时会有延迟。此外,切换方向时还有1秒的延迟。我想知道如何解决这个问题 public void keyPressed( KeyEvent ke ) { switch(ke.getKeyCode()) { case KeyEvent.VK_DOWN: spaceship.ypos+=12; break; case KeyEvent.VK_UP: spaceship.ypos-=12; break; case KeyEvent.VK_

按键输入工作,但同时按下两个以上按键时会有延迟。此外,切换方向时还有1秒的延迟。我想知道如何解决这个问题

 public void keyPressed( KeyEvent ke ) 
 { 
   switch(ke.getKeyCode()) {
   case KeyEvent.VK_DOWN: spaceship.ypos+=12; break;
   case KeyEvent.VK_UP: spaceship.ypos-=12; break;
   case KeyEvent.VK_LEFT: spaceship.xpos-=12; break;
   case KeyEvent.VK_RIGHT: spaceship.xpos+=12; break;

   }
  repaint();
}

如果需要更多的代码来理解我所说的,我可以添加更多\

编辑:我通过添加一个带有线程的主类修复了我的问题,该线程不断检查布尔值是否处于活动状态,因此没有延迟

    public class MainLoop implements Runnable{
    public MainLoop(){
    }
    public void run(){
        while(true){
            if(up){ spaceship.ypos-=8; }
            if(down){ spaceship.ypos+=8; }
            if(left){ spaceship.xpos-=8; }
            if(right){ spaceship.xpos+=8; }
            repaint();
            try {
                Thread.sleep(20);
            }
            catch (InterruptedException ex){
            }
        }
    }
}`

基本上,你需要在按键时升起一个标志,然后在按键释放时将其重置

然后,在主游戏循环中,您需要检查设置了哪些标志并采取适当的操作。这将消除您对关键事件之间固有延迟的担忧,这在不同平台上可能不同

有关示例,请参见

这允许游戏对象根据加速键在一小段时间内加速(和减速)


此外,正如已经提出的,您应该避免<代码> KistListabue/Cuff>并使用,主要是因为您将在代码< > KyListBurnter

侧注释中遇到焦点问题:考虑使用,而不是<代码> KistListor < /C> >以获得更好的帮助。