我找到了关于如何使用Java2D创建游戏的very good tutorial。在本教程中,有一个名为“Moving sprites”的部分,它显示了如何在屏幕上移动一个小的航天器图像。我正在玩这种工艺,并意识到它有时会在屏幕上“阻塞”。经过一些测试并思考这个问题后,我发现阻塞问题正在发生,因为当你使用键盘的箭头时,你有时会同时按下左右,这会阻止运动。
所以我的问题是:我如何处理这种键盘事件 - 当你按下左键按钮然后按下右键按钮 - 这样字符移动不被阻挡?
我认为这种情况很常见,因为当你在演奏时,你从左向右切换,但是你会在同一时间左右按下。
答案 0 :(得分:3)
您可以通过多种方式执行此操作。一种方法是在你的程序中使用布尔值。
您可以在按某个键时将布尔值设置为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',你要么向右移动,要么向左移动。我没有测试这段代码,所以不太确定这是否可行:)
让我知道你的想法和好运!