Javafx 8使用带有ImageView的KeyEvents

时间:2014-12-29 23:34:55

标签: event-handling imageview javafx-8 keyevent 2d-games

我正在尝试使用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() 
{

}
}

1 个答案:

答案 0 :(得分:1)

关键事件仅在具有键盘焦点时由场景图节点生成。默认情况下,ImageView无法获得键盘焦点。你需要打电话

setFocusTraversable(true);
<{1>}上的