KeyListener 未检测到按键
KeyListener not detecting keypress
我构建了一个游戏,我希望能够在按下 P 键 时暂停游戏。但是,虽然游戏是 运行,但 KeyListener
似乎没有检测到 P 键 已被按下。
我的代码正确吗?我把 addKeyListener
放在正确的地方了吗?
SO 上也有类似的问题,但他们似乎都在使用 JFrame
而我使用的是 ACM Graphics Library。不确定这是否有所作为。
主游戏循环:
@Override
public void run() {
addKeyListener(new MyKeyListener());
displayStartScreen();
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
while (lives > 0) {
drawBall();
playGame(); // additional game loop
if (brickCounter == 0) {
removeAll(); // removes all game objects
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
brickCounter = 100;
}
}
}
if (brickCounter > 0) {
removeAll();
printGameOver();
}
}
额外的游戏循环:
private void playGame() {
getBallVelocity();
while (true) {
moveBall();
updateUI();
if (ball.getY() >= getHeight()) {
lives--;
break;
}
if (brickCounter == 0) {
break;
}
}
}
KeyListener class:
private class MyKeyListener implements KeyListener {
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_P) {
System.out.println("Key 'P' has been pressed!"); // test
}
}
@Override
public void keyReleased(KeyEvent e) { /* Empty body */ }
@Override
public void keyTyped(KeyEvent e) { /* Empty body */ }
}
已解决问题。代码
addKeyListener(new MyKeyListener());
不正确,应该是
addKeyListeners(new MyKeyListener());
我构建了一个游戏,我希望能够在按下 P 键 时暂停游戏。但是,虽然游戏是 运行,但 KeyListener
似乎没有检测到 P 键 已被按下。
我的代码正确吗?我把 addKeyListener
放在正确的地方了吗?
SO 上也有类似的问题,但他们似乎都在使用 JFrame
而我使用的是 ACM Graphics Library。不确定这是否有所作为。
主游戏循环:
@Override
public void run() {
addKeyListener(new MyKeyListener());
displayStartScreen();
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
while (lives > 0) {
drawBall();
playGame(); // additional game loop
if (brickCounter == 0) {
removeAll(); // removes all game objects
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
brickCounter = 100;
}
}
}
if (brickCounter > 0) {
removeAll();
printGameOver();
}
}
额外的游戏循环:
private void playGame() {
getBallVelocity();
while (true) {
moveBall();
updateUI();
if (ball.getY() >= getHeight()) {
lives--;
break;
}
if (brickCounter == 0) {
break;
}
}
}
KeyListener class:
private class MyKeyListener implements KeyListener {
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_P) {
System.out.println("Key 'P' has been pressed!"); // test
}
}
@Override
public void keyReleased(KeyEvent e) { /* Empty body */ }
@Override
public void keyTyped(KeyEvent e) { /* Empty body */ }
}
已解决问题。代码
addKeyListener(new MyKeyListener());
不正确,应该是
addKeyListeners(new MyKeyListener());