我正在使用 javajinput
库从手柄读取数据,但我无法重新加载Controllers
,我使用它来加载它们:
public Controller[] findStickControllers() {
ControllerEnvironment ce =
ControllerEnvironment.getDefaultEnvironment();
Controller[] cs = ce.getControllers();
System.out.println(cs.length); //test
ArrayList<Controller> sel = new ArrayList<>();
for (Controller c: cs) {
if(c.getType() == Type.STICK) {
sel.add(c);
}
}
return sel.toArray(new Controller[]{});
}
这工作正常,但如果我断开我的控制器,调用它会再次找到它,反之亦然(在第一次检查后连接它根本找不到它)。
我试图在第一次查找之前让睡眠,结果如下:
- 第一次调用此方法时(不是在程序开始时)实际扫描控制器
- 再次调用时,它总是返回与第一次返回相同的控制器。
- 第一次通话也会在下面写警告
- 即使控制器已连接(并且工作),然后断开连接(它仍然会找到它)并重新连接,它也不会工作
第 3 点的警告:(列表中的格式不正确)
WARNING: Found unknown Windows version: Windows 8
Attempting to use default windows plug-in.
Loading: net.java.games.input.DirectAndRawInputEnvironmentPlugin
我使用的是 Win 8,在 Win 7 上遇到了同样的问题。我也用鼠标尝试过,结果相同。
我如何才能在第二次、第三次等时间重新加载控制器?