javascript - 我可以设置 JavaScript 以立即开始轮询连接的游戏手柄吗?
问题描述
正如 Mozilla Docs for the JavaScript GamePad API中所记录的那样,浏览器只有在用户以某种方式与手柄交互(即按下按钮或移动轴)时才真正开始从游戏手柄捕获事件。然后浏览器将以忽略第一个事件为代价开始捕获事件。
有没有办法防止这种情况发生,以至于游戏手柄的第一个事件也被捕获?是否也可以在任何交互之前获取游戏手柄的状态以捕获将推动初始网页组织的“起始状态/配置”?
解决方案
您如何阅读游戏手柄状态?我不确定您所说的“以忽略第一个事件为代价”是什么意思。Gamepad API 不会为按钮或轴输入生成事件,您必须轮询 navigator.getGamepads() 以获取新数据。
您可以通过注册 gamepadconnected 侦听器来获取游戏手柄首次暴露于页面时的初始状态。gamepadconnected 事件有一个保存当前游戏手柄状态的游戏手柄属性:
window.addEventListener('gamepadconnected', e => {
// e.gamepad is the current state when the gamepad was connected.
console.log(e.gamepad.buttons[0].value);
});
推荐阅读
- html - 将按钮移动到与复选框和文本框引导程序在同一行
- python - 使用 pyspark 的 Spark RDD 的替代方法
- android - 如何从 CloudWatch 日志中过滤掉重复值?
- amazon-web-services - 如何从 AWS Java SDK 使用 IMDSv2
- python - KeyError:'SQLALCHEMY_TRACK_MODIFICATIONS'
- api - 如何搜索 amadeus api 单程航班。任何想法
- amazon-web-services - 带有fluentbit的aws fargate和firelens,ES输出插件TCP连接随机失败
- javascript - 如果已填充或为空,则设置类
- c++ - 按特定顺序迭代数组元素
- html - 如何在 3 列布局中拥有一个固定宽度的居中列?