gpt4 book ai didi

java - 按键输入不能流畅地移动图像

转载 作者:行者123 更新时间:2023-12-02 06:46:45 26 4
gpt4 key购买 nike

按键输入可以工作,但是当同时按下两个以上的按键时会出现延迟。切换方向时也会有 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();

}

如果需要更多代码来理解我在说什么,我可以添加更多代码。\

编辑:我通过添加一个带有线程的主类来解决我的问题,该线程不断检查 boolean 值是否处于 Activity 状态,因此没有延迟。

    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){
}
}
}
}`

最佳答案

基本上,您需要在按下按键时升起一个标志,并在释放按键时重置它。

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

有关示例,请参阅 Problems with Java's Paint method, ridiculous refresh velocity .

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

此外,正如已经建议的那样,您应该避免使用 KeyListener 并使用 Key Bindings ,主要是因为您会遇到 KeyListerner

的焦点问题

关于java - 按键输入不能流畅地移动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18553358/

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