javascript - 监听游戏手柄连接和输入
问题描述
我想为我的 Web 应用程序提供游戏手柄支持。此应用程序是一个套接字客户端(使用 socket.io),它还应该能够处理游戏手柄输入。
因此,当通过 USB 或蓝牙插入游戏手柄时,我想触发一个事件,与输入相同。我希望Gamepad API能解决它。不幸的是,它没有。
我创建了这个例子
$(document).ready(() => {
window.addEventListener("gamepadconnected", e => {
console.log("connected gamepad");
});
window.addEventListener("gamepaddisconnected", e => {
console.log("disconnected gamepad");
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
我插入了我的 Xbox360 控制器,但不幸的是没有触发任何事件。我错过了什么吗?
我在 Manjaro Linux(64 位)上使用 Chrome 版本 76.0.3809.132(官方构建)
navigator.getGamepads()
在控制台中运行时,我得到了这个结果GamepadList {0: null, 1: null, 2: null, 3: null, length: 4}
顺便说一句。当然,我的控制器正在开发其他应用程序,例如游戏 :)
更新
我安装了 Firefox 68.0.1(64 位)并且它工作正常......但 Chromium 似乎在挣扎
解决方案
Gamepad API 上有很多过时的信息。我最近发表了一篇专门讨论新 API 的文章。对于具体的问题:正如前面所指出的,您很可能需要通过按下游戏手柄的任何按钮来唤醒您的游戏手柄。
推荐阅读
- java - 验证在改造回调响应到达后调用方法
- java - 字符串的hascode值可以改变吗?
- ruby-on-rails - Mina-whenever 1.0.1 - 未找到环境和命令的未解决问题
- python - PermissionError: [Errno 13] Permission denied: (执行一分钟后,程序停止)
- f# - F# 类型提供程序和计量单位
- java - 如何更新sqlite记录?
- python - 访问数据库速度
- javascript - 如何存储计算器的结果并返回 alert 或 console.log?
- batch-file - 批处理循环结果到变量
- firebase - 更改 Firebase 电话身份验证的电话号码会创建一个新的用户 UID?