有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有没有一种干净的方法来实现libgdx跨平台控件

我目前刚刚开始使用Libgdx。我达到了一个点,我想考虑跨平台(PC /手持)的问题。有一个重要问题我似乎找不到解决办法,那就是: 我不希望每个可控实体都是InputAdapter的扩展,然后包含if(PC){switch:case-key:increaseSpeed();}else if(手持){开关:案例触摸:increaseSpeed();}

是否有一种方法来实现某些东西,以便实体只接收用户输入的与程序相关的含义

对不起,如果我的问题太模糊了:'(


共 (2) 个答案

  1. # 1 楼答案

    一般来说,Libgdx应用程序只处理所有输入,不必担心它们在哪个设备上。像这样:

    ...
    
    @Override
    public boolean keyDown(int keycode) {
        if (keycode == Keys.RIGHT)
            increaseSpeed();
        return true;
    }
    
    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        increaseSpeed();
        return true;
    }
    

    这是使用基于事件的^{}来处理输入事件

    LibGDX确实会将桌面鼠标事件映射到“触摸”事件上,这样就可以折叠PC/Android输入处理的这一部分,但没有通用的方法将键盘键映射到触摸事件或类似的事件

  2. # 2 楼答案

    你应该看看这个:Interfacing with plaform specific code

    但在您的情况下,您可能不会使用^{。基本思想是,在不同的特定于平台的项目中,您将实现一个InputAdapter,例如DesktopController extends InputAdapter。然后你将这个InputAdapter提供给你的ApplicationListener。不知怎的,是这样的:

    public class MyGame implements ApplicationListener {
        private final InputAdapter controller;
    
        public MyGame(InputAdapter controller) {
            this.controller = controller;
            // this controller can now be used
            // Gdx.input.setInputProcessor(controller);
        }
    
    }
    
    public static void main(String[] argv) {
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        new LwjglApplication(new MyGame(new DesktopController()), config);
    }