Java 是否有一种干净的方法来实现libgdx跨平台控件
我目前刚刚开始使用Libgdx。我达到了一个点,我想考虑跨平台(PC /手持)的问题。有一个重要问题我似乎找不到解决办法,那就是: 我不希望每个可控实体都是InputAdapter的扩展,然后包含if(PC){switch:case-key:increaseSpeed();}否则if(手持){switch:case-touch:increaseSpeed();} 是否有一种方法来实现某些东西,以便实体只接收用户输入的与程序相关的含义Java 是否有一种干净的方法来实现libgdx跨平台控件,java,user-controls,libgdx,Java,User Controls,Libgdx,我目前刚刚开始使用Libgdx。我达到了一个点,我想考虑跨平台(PC /手持)的问题。有一个重要问题我似乎找不到解决办法,那就是: 我不希望每个可控实体都是InputAdapter的扩展,然后包含if(PC){switch:case-key:increaseSpeed();}否则if(手持){switch:case-touch:increaseSpeed();} 是否有一种方法来实现某些东西,以便实体只接收用户输入的与程序相关的含义 对不起,如果我的问题太模糊:“(你应该看看这个: 但在您的情况
对不起,如果我的问题太模糊:“(你应该看看这个: 但在您的情况下,您可能不会使用
接口
。基本思想是,在不同的特定于平台的项目中,您将实现一个InputAdapter
,例如DesktopController扩展InputAdapter
。然后您将向应用程序的Listener提供该InputAdapter
e> .不知何故:
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);
}
一般来说,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输入处理的这一部分,但没有通用的方法将键盘键映射到触摸事件或类似事件。您的意思是我将创建控制器(具有用户IPUT的程序特定含义)在调用游戏之前,将其输入到游戏中。然后,在程序体内,该控制器应该给出程序的特定含义,而不是用户输入。对吗?我真的不理解。没问题。谢谢你的努力:)抱歉,但是,我不能将此标记为答案。而且,此代码进入共享的“游戏”项目,而不是桌面或android,对吗?是的,这是你的“游戏”项目的所有独立于平台的代码。太棒了!谢谢你的回答:D