[英]How to change android activity in Eclipse cross-platform Libgdx project
[英]Is there a clean way to make a libgdx cross-platform controls implementation
我目前刚开始与Libgdx合作。 我到了要考虑跨平台(PC /手持式)问题的地步。 我似乎找不到解决的一个重要问题,它是:我不希望每个可控实体都是InputAdapter的扩展,然后包含if(PC){switch:case key:gainSpeed();。 } else if(掌上电脑){switch:case touch:gainSpeed();}
是否有实现某些东西的方法,以便实体仅接收与程序相关的用户输入含义?
抱歉,我的问题太含糊:'(
您应该看一下: 与平台特定代码的接口 。
但是在您的情况下,您可能不会使用interface
。 基本思想是,在不同平台特定的项目中,您将实现一个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);
}
通常,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;
}
这是使用基于事件的InputProcessor
来处理输入事件。
LibGDX确实将桌面鼠标事件映射到“触摸”事件,因此您可以折叠PC / Android输入处理的该部分,但是没有通用的映射键盘键来映射触摸事件或类似的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.