- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 java jinput
库从游戏 handle 读取数据,但我无法重新加载 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[]{});
}
这工作正常,但如果我断开我的 Controller ,调用它会再次找到它,反之亦然(在第一次检查后连接它根本找不到它)。
我试着在第一次查找之前先 sleep ,结果如下:
第 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 上也有同样的问题。我也用鼠标尝试过,结果相同。
如何在第 2、3 次等时间准确地重新加载 Controller ?
最佳答案
我遇到了同样的问题。原因是实际的硬件扫描对于每个 DefaultControllerEnvironment 对象只发生一次。由于唯一可访问的实例化是单例,因此它永远不会进行另一次扫描。
强制硬件扫描的一种简单方法是创建一个新对象,但类和构造函数都不是公共(public)的。但是,您可以通过反射调用构造函数来解决此限制。
重新扫描
private static ControllerEnvironment createDefaultEnvironment() throws ReflectiveOperationException {
// Find constructor (class is package private, so we can't access it directly)
Constructor<ControllerEnvironment> constructor = (Constructor<ControllerEnvironment>)
Class.forName("net.java.games.input.DefaultControllerEnvironment").getDeclaredConstructors()[0];
// Constructor is package private, so we have to deactivate access control checks
constructor.setAccessible(true);
// Create object with default constructor
return constructor.newInstance();
}
用法
// Be aware that creating a new environment is fairly expensive
Controller[] controllers = createDefaultEnvironment().getControllers();
删除 Windows 8 警告
/**
* Fix windows 8 warnings by defining a working plugin
*/
static {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
public Object run() {
String os = System.getProperty("os.name", "").trim();
if (os.startsWith("Windows 8")) { // 8, 8.1 etc.
// disable default plugin lookup
System.setProperty("jinput.useDefaultPlugin", "false");
// set to same as windows 7 (tested for windows 8 and 8.1)
System.setProperty("net.java.games.input.plugins", "net.java.games.input.DirectAndRawInputEnvironmentPlugin");
}
return null;
}
});
}
关于Java Jinput : rescan/reload controllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17413690/
您好,我正在尝试用 Java 制作一款游戏,让用户可以选择操纵杆或游戏 handle 来控制移动。所以我发现了一个叫做“JInput”的东西,它可以很容易地检测到所有连接的游戏 Controller
我已经做了很多研究,但我似乎找不到 JInput 获取 Controller X 和 Y 轴的基本代码。另外,要“选择”/设置 Controller ,如何过滤掉鼠标和键盘?谢谢! 最佳答案 Java
我正在尝试使用 Jinput 打印出鼠标位置: public static void main(String[] args) { input = new InputManager();
好吧,我不知道如何表达这个问题,但也许我的代码会说明问题: public class ControllerTest { public static void main(String [] ar
我在 Win7 64 位上使用 JInput 进行游戏 handle 控制。我遇到了一个问题:一旦获得 DefaultEnvironment , Controller 列表就不会更新或刷新。
如何将 ControllerListener 添加到 jinput 库中的 Controller 。我知道 ControllerListener 类是一个接口(interface),并且在 Contr
我需要一个 Maven 项目,通过它我可以从操纵杆检索信号。我通过调用 mvn package 命令来构建 JAR 文件来设置它。但是 jinput 原生库存在一些问题。我添加了 jinput 2.0
我目前正在处理一些有关双鼠标输入的问题。我查找了几个库并认为 JInput 效果最好。尽管我能够获得插入笔记本电脑的所有设备的列表,但我无法检索任何 PollData。以下代码仅产生 0: publi
我有一个 Raspberry Pi 2 和一个设置为操纵杆的 arduino pro micro。在 Pi 上,我有一个 java 应用程序,它在连接了 arduino 游戏杆的 Linux 和 Wi
我正在使用 java jinput 库从游戏 handle 读取数据,但我无法重新加载 Controllers,我用它来加载它们: public Controller[] findStickContr
关注此guide为了清理我的输入,我想知道这个是否覆盖了一个空字符串? $jinput = JFactory::getApplication()->input; $this->name = $jinp
我目前正在开发一款基于 Slick2D 的游戏,但遇到了问题。 当我尝试运行我的游戏时(无论是从 dist 还是 ide),我收到以下错误: java.lang.UnsatisfiedLinkErro
在我编写完一个使用两个 DS4 Controller 的小游戏后,我尝试在我的树莓派上运行它。由于 java 安装在 raspbian 中,我只需要安装 jinput,我通过键入 sudo apt-g
我正在编写一个需要在特定时间轮询键盘按键的程序,我认为我应该使用 JInput 的内置 Keyboard 类,而不是编写自己的事件驱动键盘轮询类。 当我以 root 身份运行程序时(我在 Ubuntu
我正在尝试使用 JInput对于我的项目,库需要一些二进制文件才能运行我的应用程序。 我发现,所需的二进制文件在库中。但是,我还是得到了 UnsatisfiedLinkError当做 gradle r
我正在尝试在 OS X 上的 Java 应用程序中将 jinput 与包装器库 (procontroll) 一起使用。 问题出在 jinput 库中。当控制权到达 net.java.games.inp
我尝试在这个简单的代码上使用它,JInput 使 Controller 自动向上和向左!看起来 input.isControllerUp(Input.ANY_CONTROLLER) 开始是正确的!我该
问题 为什么我不能在 Joomla 2.5+ 中使用 Jinput 获取 cookie 的值? 详情 我以前用过 $cookievalue = JRequest::getVar( 'cookieval
我在管理 View 中添加了一个字段来上传文件。上传部分工作正常,但表单不会在保存时将文件名添加到数据库中。我在这里看到了一个类似的堆栈溢出问题,该问题已得到解答,但他们使用的是现在已弃用的 JReq
我是一名优秀的程序员,十分优秀!