JS - необходимо получить необработанный ввод мыши (или близко к нему) - PullRequest
1 голос
/ 11 февраля 2012

Я пишу игру на HTML5 и хочу, чтобы пользователи могли контролировать направление своего персонажа, перемещая мышь влево / вправо.

Я могу получить движение мыши с помощью функции onmousemove, pageX и pageY, но как только мышь достигнет края экрана ... это слишком плохо для вас. Есть ли кросс-браузерный способ обойти это (возможно, получая фактическое движение мыши вместо позиции курсора)?

Если нет, могу ли я установить курсор мыши на середину элемента, если он достигает края, и просто позволить им перемещать мышь из элемента по вертикали?

Ответы [ 3 ]

4 голосов
/ 03 января 2014

Используйте API блокировки указателя.

http://www.html5rocks.com/en/tutorials/pointerlock/intro/

https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock

Это "экспериментально".

Браузер запросит у пользователя разрешение на блокировку курсора.

1 голос
/ 11 февраля 2012

Нет, нет никакого способа сделать это, о котором я знаю, но мог бы быть способ получить тот же эффект.

Когда курсор начинает двигаться влево (или вправо), вы записываете его. Когда курсор коснется края экрана, он, вероятно, начнет двигаться вверх или вниз (потому что никто не двигает рукой достаточно устойчиво, чтобы следовать по прямой линии в 1 пиксель). Вы интерпретируете это движение вверх и вниз как движение в том же направлении (в данном случае влево), пока не будет обнаружено движение в правильном направлении.

Если курсор перемещается вправо в начале, вы записываете вверх и вниз как движение вправо, пока не будет обнаружено левое направление.

0 голосов
/ 11 февраля 2012

Это невозможно, если вы не содержите страницу в собственном приложении для вашей целевой платформы (платформ) или не запросите страницу в полноэкранном режиме для игры, которую поддерживают современные браузеры.

https://developer.mozilla.org/en/DOM/Using_full-screen_mode

http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/

Вот что нужно иметь в виду:

  • В целях безопасности веб-страница не может обнаружить курсор вне области просмотра браузера.
  • Устройства системного уровня не могут управляться через веб-страницу (например, «Не удается управлять мышью»)

* Это может быть возможно со вспышкой, хотя, не уверен.

...