我必须为我的课程编写一个简单的游戏,但我在移动我的'角色'时遇到了问题。它工作得很好,但只是我第一次按下其中一个箭头键。之后它不再响应了。请告诉我每次按键时如何使其工作。谢谢!
public void startGame()
{
gRow = 1;
gCol = 1;
setUpLabels();
gp.setOnKeyPressed(new EventHandler<KeyEvent>()
{
@Override
public void handle(KeyEvent keyEvent) {
switch(keyEvent.getCode()){
case DOWN:
{
labels[gRow + 1][gCol].getStyleClass().add("guard");
labels[gRow + 1][gCol].setText("G");
gRow++;
}
break;
case UP:
{
labels[gRow - 1][gCol].getStyleClass().add("guard");
labels[gRow - 1][gCol].setText("G");
gRow--;
}
break;
case RIGHT:
{
labels[gRow][gCol+1].getStyleClass().add("guard");
labels[gRow][gCol+1].setText("G");
gCol++;
}
break;
case LEFT:
{
labels[gRow][gCol-1].getStyleClass().add("guard");
labels[gRow][gCol-1].setText("G");
gCol--;
}
break;
}
}
});
gp.requestFocus();
这是我在GUI类中的startGame()方法,其中放置了setOnKeyPressed()方法。
答案 0 :(得分:0)
什么是gp?你只为你的听众添加&#39; gp&#39;零件。也许这个组件在一些动作后失去了焦点。您可以将自己的KeyEventDispatcher添加到KeyboardFocusManager,如:https://stackoverflow.com/a/1379517/6405072