Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 如何区分相同类型的两个游戏板?_Javascript_Google Chrome_Gamepad Api - Fatal编程技术网

Javascript 如何区分相同类型的两个游戏板?

Javascript 如何区分相同类型的两个游戏板?,javascript,google-chrome,gamepad-api,Javascript,Google Chrome,Gamepad Api,我有两个通过usb连接的游戏板,它们的类型完全相同。当它们具有相同的字段时,如何区分它们?我可以使用索引,但当我再次将它们连接到计算机时会发生什么情况?这些索引可能会被交换(这些游戏板具有不同的功能)。我还认为索引可能在运行时被交换。有UUID之类的吗 您可以保留自己的游戏板阵列,并为每个连接的游戏板创建自己的ID。我不确定Gamepad API是如何工作的,如果索引交换,这会很奇怪,但是这个解决方案可以解决这个问题 let gamepads = []; // On Connect add i

我有两个通过usb连接的游戏板,它们的类型完全相同。当它们具有相同的字段时,如何区分它们?我可以使用索引,但当我再次将它们连接到计算机时会发生什么情况?这些索引可能会被交换(这些游戏板具有不同的功能)。我还认为索引可能在运行时被交换。有UUID之类的吗


您可以保留自己的游戏板阵列,并为每个连接的游戏板创建自己的ID。我不确定Gamepad API是如何工作的,如果索引交换,这会很奇怪,但是这个解决方案可以解决这个问题

let gamepads = [];

// On Connect add it to list of gamepads
window.addEventListener("gamepadconnected", function(e) {
  let gamepad = navigator.getGamepads()[e.gamepad.index];
  // You should find some better way to create a unique ID (Can use UUID's)
  let uniqueId = Math.floor(Math.random() * 10000);
  gamepads.push({gamepad: gamepad, uniqueId: uniqueId});
});

// On disconnect
window.addEventListener("gamepaddisconnected", function(e) {
  let disconnectedGamepad = gamepads.find((gamepad) => {
      return gamepad.index === e.gamepad.index;
  });
  gamepads = gamepads.splice(disconnectedGamepad.index, 1);
});