FXGL游戏开发-键盘输入事件处理

FXGL 是一个 JavaFX 游戏开发的框架,使用 FXGL 无需安装和设置,开箱即用,支持多平台打包,UI 基于 JavaFX,非常容易上手。

在 【FXGL游戏开发-游戏初始化】中成功给游戏世界加入了一个玩家(一个正方形),下面尝试接收键盘输入事件来让玩家动起来。

FXGL 的 GameApplication 提供了很多初始化方法,可以利用 initInput() 方法来初始化游戏键盘输入事件处理:

/**
 * @author IT青年
 */
public class InputGameApp extends GameApplication {

    @Override
    protected void initSettings(GameSettings settings) {
        settings.setTitle("Hi IT青年 Game");
        settings.setWidth(480);
        settings.setHeight(320);
        settings.setVersion("0.1");
    }

    // 精灵类型
    private enum Type {
        PLAYER;
    }

    // 玩家
    private Entity player;

    @Override
    protected void initGame() {
        player = FXGL.entityBuilder()
                .type(Type.PLAYER)
                .at(200, 120)
                .view(new Rectangle(50, 50, Color.RED))
                .buildAndAttach();
    }

    @Override
    protected void initInput() {
        Input input = FXGL.getInput();
        input.addAction(new UserAction("F") {
            @Override
            protected void onAction() {
                boolean v = player.getViewComponent().isVisible();
                player.getViewComponent().setVisible(!v);
            }
        }, KeyCode.F);
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在上面的示例中,通过重写 initInput 监听键盘的 "F" 按键,通过按 "F" 键来切换玩家的显示和隐藏。

运行效果:

当然也用按键来控制玩家的移动,只需要将上面的代码改成下面这样即可:

player.translateX(-5);
player.translateY(5);

其中 translateX() 表示左右移动,正数表示向右移动,负数表示向左移动,同样的 translateY() 表示上下移动,FXGL 的坐标原点是在左上角。

例如,用按键 "A"、"D" 来控制玩家左右移动可以这样处理:

input.addAction(new UserAction("左移") {
    @Override
    protected void onAction() {
        player.translateX(-5);
    }
}, KeyCode.A);
input.addAction(new UserAction("右移") {
    @Override
    protected void onAction() {
        player.translateX(5);
    }
}, KeyCode.D);

FXGL 其实提供了简短的事件监听写法,上面的例子可以改成这样:

FXGL.onKey(KeyCode.A, () -> player.translateX(-5));
FXGL.onKey(KeyCode.D, () -> player.translateX(5));

===========================================================================
HiIT青年
关注公众号,阅读更多文章。

posted @ 2022-10-23 22:12  HiIT青年  阅读(388)  评论(0编辑  收藏  举报