1

如何将 ControllerListener 添加到 jinput 库中的控制器。我知道 ControllerListener 类是一个接口,并且在 ControllerEnvironment 中有一个添加侦听器的方法,但是即使我这样做什么也没发生,我该如何运行它呢?

4

1 回答 1

2

根本没有插件可以触发 ControllerListener 的方法。可能不会有任何来自创建者的插件,因为该项目现在已经很长时间没有更新了,最后一次更新只是为了删除 Windows 10 未知的通知。

目前,您唯一的解决方案是:

  • 控制器的 poll 方法返回一个布尔值。如果这个布尔值是假的,那么控制器就被移除了。
  • 编写自己的插件或修改现有插件以触发 ControllerListener 接口中的方法
  • 每隔几秒重建环境,并检查新控制器阵列与旧控制器阵列的差异。

对于最后一个解决方案,仅调用 ControllerEnvironment.getDefaultEnvironment().getControllers() 是不够的。您必须再次调用插件构造函数。由于大多数插件类都在包可见性上,您可能必须编辑原始源代码才能将它们公开。DirectAndRawEnvironmentPlugin 已经有一个公共构造函数。所以你可以做这样的事情:

ControllerEnvironment env = new DirectAndRawEnvironmentPlugin();
if(!env.isSupported()) {
    env = ControllerEnvironment.getDefaultEnvironment();
}
于 2018-03-29T07:05:30.443 回答