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青年,原文链接:https://www.cnblogs.com/itqn/p/15196412.html,禁止转载。
更多文章可以扫描小程序码进行查看,下面是小程序部分文章列表截图。