我正在尝试使用NetBeans 8.1在Javafx 8上制作游戏。我所有游戏对象的超类都是ImageView,我想处理游戏对象中的关键事件而不是我的场景。问题是KeyEvents似乎只能在Scene上运行,当我向我的游戏对象添加KeyEvent Handler时,按下键时没有任何反应。反正有没有将KeyEvents添加到任何节点,如ImageView,并让它工作?下面是我的目标示例(VisibleGameObject扩展ImageView):
package hangmanElements;
import javafx.event.EventHandler;
import javafxgame2D.gameObjects.VisibleGameObject;
import javafx.scene.image.Image;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
public class HangmanPost extends VisibleGameObject
{
public HangmanPost()
{
super(new Image("/resources/hangmanPost.png"));
setOriginAtCenter();
setPosition(100, 250);
setOnKeyPressed(new EventHandler<KeyEvent>(){
@Override
public void handle(KeyEvent event)
{
if(event.getCode() == KeyCode.UP)
{
System.out.println("Up pressed MAN!");
}
}
});
}
@Override
public void update()
{
}
}
答案 0 :(得分:1)
关键事件仅在具有键盘焦点时由场景图节点生成。默认情况下,ImageView
无法获得键盘焦点。你需要打电话
setFocusTraversable(true);
<{1>}上的。