До сих пор каждый раз, когда я использовал GamePad API в Chrome, он изначально возвращал массив, содержащий четыре записи. «О: Справка» для моей версии возвращает следующую информацию:
Версия 59.0.3071.115 (официальная сборка) (64-разрядная версия)
При запуске моего кода с одним устройством ввода, подключенным к моему компьютеру, массив содержит следующие записи:
- array[0] : объект GamePad для моего подключенного устройства;
- массив [1] : ноль;
- массив [2] : ноль;
- массив [3] : ноль;
На данный момент у меня недостаточно свободных USB-портов, чтобы попытаться подключить более 3 устройств, поэтому, если у кого-то есть необходимое оборудование, это будет интересный эксперимент, чтобы узнать, что произойдет, если вы подключите 5 геймпадов к вашему компьютеру. , и посмотрите, создаст ли Chrome достаточно большой массив для них всех.
Еще одна причуда, которую я обнаружил, заключается в следующем. Вы должны нажать кнопку на одном из ваших геймпадов/джойстиков перед запуском любого кода, вызывающего метод navigator.getGamePads(). Это функция безопасности, которая не позволяет веб-страницам прослушивать данные вашего геймпада и отправлять их злоумышленнику. Не хочу, чтобы эта информация была отправлена мошенникам. Однако на практике я обнаружил, что это не работает на моем компьютере. Даже после нескольких нажатий кнопки в моем коде появляется диалоговое окно, которое я закодировал, чтобы сказать: «Геймпады не обнаружены». Затем я закрываю диалог, нажимаю кнопку на джойстике, пробую еще раз, и вуаля, код обнаружения регистрирует мои устройства. Является ли это причудой Chrome или воспроизведено в Firefox, мне еще предстоит проверить.
Мне приходит в голову мысль: при тестировании кода вашего браузера попробуйте нажать кнопку на КАЖДОМ подключенном устройстве и посмотрите, приведет ли это к тому, что GamePad API зарегистрирует все ваши устройства. Хотя я могу предвидеть одну проблему, которая может усложнить ваш тест, заключается в том, что у вас подключено несколько идентичных устройств. Если вы найдете набор из 8 разных геймпадов и попробуете их, результаты могут отличаться.
На данный момент существует ряд проблем с API GamePad из-за того, что стандарт W3C для этого API еще не завершен — он все еще находится на стадии черновика. Как следствие, разные браузеры имеют разные детали реализации, пока их разработчики не получат стабильный стандарт для работы.
person
David Edwards
schedule
01.08.2017