Java2D游戏:如何正确使用键盘?
我找到了一个关于如何使用Java2D创建游戏的方法。在本教程中,有一个叫做“移动精灵”的部分,展示了如何在屏幕上移动一个小的航天器图像。我在玩这个手艺,意识到它有时会在屏幕上“阻塞”。经过一些测试和思考这个问题,我发现阻塞问题发生了,因为当你使用键盘的箭头时,有时你同时按下左键和右键,这会阻塞移动 所以我的问题是:我如何处理这种键盘事件-当你按下左键时,保持按下它,然后按下右键-这样字符的移动就不会被阻止Java2D游戏:如何正确使用键盘?,java,keyboard,java-2d,Java,Keyboard,Java 2d,我找到了一个关于如何使用Java2D创建游戏的方法。在本教程中,有一个叫做“移动精灵”的部分,展示了如何在屏幕上移动一个小的航天器图像。我在玩这个手艺,意识到它有时会在屏幕上“阻塞”。经过一些测试和思考这个问题,我发现阻塞问题发生了,因为当你使用键盘的箭头时,有时你同时按下左键和右键,这会阻塞移动 所以我的问题是:我如何处理这种键盘事件-当你按下左键时,保持按下它,然后按下右键-这样字符的移动就不会被阻止 我认为这种情况很常见,因为当你在玩游戏时,你会从左向右切换,但有一瞬间你会同时按下左键和右
我认为这种情况很常见,因为当你在玩游戏时,你会从左向右切换,但有一瞬间你会同时按下左键和右键。你可以通过多种方式来实现这一点。一种方法是在程序中使用布尔值 您可以在按下某个键时将布尔值设置为true,释放布尔值时将其设置为false。即:
int x,xSpeed;
boolean movingLeft = false;
boolean movingRight = false;
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if(key == KeyEvent.VK_LEFT){
movingLeft = true;
}
if(key == KeyEvent.VK_RIGHT){
movingRight = true;
}
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if(key == KeyEvent.VK_LEFT){
movingLeft = false;
}
if(key == KeyEvent.VK_RIGHT){
movingRight = false;
}
}
public void moving(){
if(movingLeft){
x -= xSpeed;
}
if(movingRight){
x += xSpeed;
}
}
好的,让我们看看这个代码。因为我们使用的是“else if”,你要么向右移动,要么向左移动。我还没有测试这段代码,所以不太确定这是否有效:)
让我知道你的想法,祝你好运