Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Gamepad API“;gamepadconnected“;不起作用_Javascript_Gamepad_Gamepad Api - Fatal编程技术网

Javascript Gamepad API“;gamepadconnected“;不起作用

Javascript Gamepad API“;gamepadconnected“;不起作用,javascript,gamepad,gamepad-api,Javascript,Gamepad,Gamepad Api,我使用的Gamepad API“gamepadconnected”函数工作不正常。然而,“gamepaddisconnected”功能由于某些原因而起作用。在连接我的蓝牙控制器时,控制台中不会显示任何内容,但是,它会显示断开连接时显示的信息 我这里的内容非常基本和标准: window.addEventListener("gamepadconnected", function(e) { console.log("Controller connected"); }); window.addEv

我使用的Gamepad API“gamepadconnected”函数工作不正常。然而,“gamepaddisconnected”功能由于某些原因而起作用。在连接我的蓝牙控制器时,控制台中不会显示任何内容,但是,它会显示断开连接时显示的信息

我这里的内容非常基本和标准:

window.addEventListener("gamepadconnected", function(e) {
  console.log("Controller connected");
});

window.addEventListener("gamepaddisconnected", function(e) {
  console.log("Controller disconnected");
});
我错过了什么?哪里出了问题?我确保第一个重点页面就是上面的脚本。感谢您的帮助。

MDN声明“如果加载页面时已连接gamepad,则当用户按下按钮或移动轴时,gamepadconnected事件将发送到聚焦页面。”。因此,当您连接pad时,您的页面不会始终收到
gamepadconnected
事件

因此,最好让用户按下按钮启动应用程序。当有多个gamepad连接到计算机,并且您的应用程序必须知道要使用哪个gamepad时,这也很有用。

MDN声明“如果页面加载时gamepad已连接,则当用户按下按钮或移动轴时,gamepadconnected事件将调度到聚焦页面。”。因此,当您连接pad时,您的页面不会始终收到
gamepadconnected
事件

因此,最好让用户按下按钮启动应用程序。当有多个GamePad连接到计算机,并且您的应用程序必须知道要使用哪个GamePad时,这一点也很有用。

Chrome因其GamePad API的单独实现而臭名昭著(在使用它之后,我当然会这么认为!)。一个问题是,据我所知,它还不支持“gamepadconnected”事件,您必须轮询GamePad对象的gamepadconnected属性,以便对连接和断开连接进行合理的操作。我知道这是一种痛苦,但这可能反映了一个事实,即W3C的API标准仍在不断变化。您还会发现还有其他问题,例如Windows上的浏览器X与Linux上的浏览器X的行为不同

我不知道是否有人尝试过将这些设备插入Android或iOS设备(除非您计划将飞行sim卡移植到其中,否则对触摸屏设备的要求可能是多余的!),但我怀疑如果进行这些实验,将会出现更多的兼容性问题。如果你有能力潜入一个带有USB端口的Android智能手机,并在智能手机浏览器中修改JavaScript,你可能会发现更多有趣的问题浮出水面

至于传统的游戏手柄(比如我10岁的微软Sidewinder Pro USB),它们也有自己的乐趣。我目前正在努力使其他合理的代码与奇怪的东西一起工作,例如GamePad对象中的axis属性被分配给了hat开关,等等,它在这个设备上是一个数字数据源,而不是模拟数据源。当你坚持使用GamePad API,直到W3C最终确定该标准时,请注意兼容性问题的浪潮正在向你袭来。

Chrome因其GamePad API的单独实现而臭名昭著(在使用它之后,我当然会这么认为!)。一个问题是,据我所知,它还不支持“gamepadconnected”事件,您必须轮询GamePad对象的gamepadconnected属性,以便对连接和断开连接进行合理的操作。我知道这是一种痛苦,但这可能反映了一个事实,即W3C的API标准仍在不断变化。您还会发现还有其他问题,例如Windows上的浏览器X与Linux上的浏览器X的行为不同

我不知道是否有人尝试过将这些设备插入Android或iOS设备(除非您计划将飞行sim卡移植到其中,否则对触摸屏设备的要求可能是多余的!),但我怀疑如果进行这些实验,将会出现更多的兼容性问题。如果你有能力潜入一个带有USB端口的Android智能手机,并在智能手机浏览器中修改JavaScript,你可能会发现更多有趣的问题浮出水面


至于传统的游戏手柄(比如我10岁的微软Sidewinder Pro USB),它们也有自己的乐趣。我目前正在努力使其他合理的代码与奇怪的东西一起工作,例如GamePad对象中的axis属性被分配给了hat开关,等等,它在这个设备上是一个数字数据源,而不是模拟数据源。当您坚持使用GamePad API,直到W3C最终确定标准时,请注意兼容性问题的浪潮正在向您袭来。

您使用的是哪种浏览器?你试过
webkitgamepadconnected
mozgamepadconnected
吗?我用的是Chrome,我没有试过。我想我应该尝试使用webkitgamepadconnected?不幸的是,这似乎不起作用。好的,我发现了发生的事情。仅当您重新启动选项卡时,连接的事件才会激发。由于某些原因,刷新页面将不起作用。我相信这是意料之中的。MDN声明“如果加载页面时已连接gamepad,则当用户按下按钮或移动轴时,gamepadconnected事件将被发送到聚焦页面。”。您使用的是哪种浏览器?你试过
webkitgamepadconnected
mozgamepadconnected
吗?我用的是Chrome,我没有试过。我想我应该尝试使用webkitgamepadconnected?不幸的是,这似乎不起作用。好的,我发现了发生的事情。仅当您重新启动选项卡时,连接的事件才会激发。由于某些原因,刷新页面将不起作用。我相信这是意料之中的。MDN声明“如果加载页面时已连接gamepad,则gamepadconnected事件为dispatch