gpt4 book ai didi

java - JInput 不更新/刷新

转载 作者:行者123 更新时间:2023-12-02 08:37:36 26 4
gpt4 key购买 nike

我在 Win7 64 位上使用 JInput 进行游戏 handle 控制。我遇到了一个问题:一旦获得 DefaultEnvironment , Controller 列表就不会更新或刷新。

    for (Controller c : ControllerEnvironment.getDefaultEnvironment().getControllers()) {
if (c.getType() == Controller.Type.GAMEPAD) {
pluggedControllers.put(c);
}
}

因此,如果在我调用 ControllerEnvironment.getDefaultEnvironment() 后插入或拔出 Controller ,则不会发生任何变化。该列表仍将提供失效 Controller ,并且无法添加新 Controller 。

目前我正在使用这个解决方法,我认为这是相当丑陋的。任何想法如何让它在没有这个黑客的情况下工作:

if (System.getProperty("os.name").equals("Windows 7") &&
System.getProperty("os.arch").equals("amd64"))
try {
Class<?> clazz = Class.forName("net.java.games.input.DefaultControllerEnvironment");
Constructor<?> defaultConstructor = clazz.getDeclaredConstructor();
defaultConstructor.setAccessible(true); // set visibility to public

Field defaultEnvironementField = ControllerEnvironment.class.getDeclaredField("defaultEnvironment");
defaultEnvironementField.setAccessible(true);
defaultEnvironementField.set(ControllerEnvironment.getDefaultEnvironment(), defaultConstructor.newInstance());
} catch (Exception e) {
e.printStackTrace();
}

最佳答案

过去偶尔会提出这样的要求。解决这个问题的两种方法。

1) 在开始游戏之前插入所有 Controller 。并非所有现有游戏都支持此功能。

2) 实现已有的接口(interface)接口(interface)。我曾多次要求志愿者来做这项工作,但每当我这样做时,这突然变得不那么重要了。

关于java - JInput 不更新/刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13135528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com