libgdx是一个跨平台的游戏引擎,因此它要支持多个平台的输入,所以Input模块在libgdx中是非常重要的。

不同的平台有不同的输入设备。在桌面上,用户可以通过键盘和鼠标来操作和运行程序。基于浏览器的游戏也是如此。但在Android上,鼠标被替换成(电容式)触摸屏和硬件键盘(现在很少有硬件键盘了)。很多Android设备还配备了重力感应器,还有指南针等。

libgdx把这些不同的输入设备抽象出来。鼠标和触摸屏就被当成了相同的,但相比而言鼠标缺少了多点触控(他们只能返回一个单一的“触点”)和缺少触摸屏按钮的支持(他们将只返回“左键点击”)。

根据输入设备,可以定期查询设备的状态,或注册一个监听器来按时间顺序接收输入事件。前者在许多街机游戏中应用到,比如摇杆控制。如果涉及UI元素,如按钮等,那么后者是必要的,当然这些都依赖于事件的顺序,比如按下和抬起。

所有的这些输入设备,都可以通过Input模块来访问到。

设置和访问

有时候我们需要明确哪些输入设备是支持的。这也是通常情况下,很多游戏并不需要支持所有的输入设备,比如你可能不需要的重力加速器或指南针。在Android平台上禁用这些输入设备,可以节省电量电池。以下将告诉你如何执行这些操作。

1、禁用重力加速器和指南针(仅适用Android平台)

配置输入设备,目前只在Android上有意义。 AndroidApplicationConfiguration类有一个public域,你可以在初始化之前先设置好。

假设我们的游戏并不需要加速器和指南针,我们可以禁用这个输入设备如下:

public class MyGameActivity extends AndroidApplication {
   @Override
   public void onCreate (Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
      config.useAccelerometer = false;
      config.useCompass = false;
      initialize(new MyGame(), config);
   }
}

加速度计和指南针,默认情况下是启用的。上面的代码禁用了它们,从而将保留一些宝贵的电量。

2、查询可用的输入设备

要检查一个特定的输入设备在目前的应用程序运行的平台上是否可用,你可以使用Input.isPeripheralAvailable()方法。

boolean hardwareKeyboard = Gdx.input.isPeripheralAvailable(Peripheral.HardwareKeyboard);
boolean multiTouch = Gdx.input.isPeripheralAvailable(Peripheral. MultitouchScreen);

请参考Input.Peripheral看其余的可用参数:

/** Enumeration of potentially available peripherals. Use with {@link Input#isPeripheralAvailable(Peripheral)}.
* @author mzechner */
public enum Peripheral {
    HardwareKeyboard, OnscreenKeyboard, MultitouchScreen, Accelerometer, Compass, Vibrator
}

请注意,只有少数的Android设备有物理键盘。即使是实际存在的,用户可能没有滑下打开。在这种情况下,上述方法将返回false。

libgdx跨平台游戏引擎介绍之Input(一)

输入设备的介绍就到这里,敬请关注后期的教程。欢迎转载,但请保留出处:爱撸小杰