Переместить указатель мыши в определенное положение?
Я создаю игру HTML5, и я пытаюсь поместить курсор мыши на определенный элемент управления на определенном событии, так что перемещение в определенном направлении всегда имеет тот же результат. Это возможно?
9 ответов:
большой вопрос. Это действительно что-то отсутствует в API браузера Javascript. Я также работаю над игрой WebGL со своей командой, и нам нужна эта функция. Я открыл проблему на bugzilla Firefox, чтобы мы могли начать говорить о возможности наличия API для блокировки мыши. Это будет полезно для всех разработчиков игр HTML5/WebGL.
Если вам нравится, прийти и оставить комментарий с обратной связью, и upvote вопрос:
https://bugzilla.mozilla.org/show_bug.cgi?id=630979
спасибо!
вы не можете переместить указатель мыши с помощью JavaScript.
просто подумайте о последствиях на секунду, если бы вы могли;)
- пользователь думает: "Эй, я хотел бы нажать на эту ссылку"
- Javascript перемещает mousecursor на другую ссылку
- пользователь нажимает неправильную ссылку и непреднамеренно загружает вредоносную программу, которая форматирует его c-drive и ест его конфеты
- запустить небольшой веб-сервер на клиентской машине. Может быть небольшой 100kb вещь. Скрипт Python / Perl и др.
- включить небольшой, предварительно скомпилированный C исполняемый файл, который можно двигать мышкой.
запустите его как CGI-скрипт с помощью простого http-вызова, AJAX, что угодно - с координатами, на которые вы хотите переместить мышь, например:
http://localhost:9876/cgi/mousemover?x=200&y=450
PS: Для любой проблемы есть сотни оправданий, почему и как - это не может и не должно быть сделано.. Но в этой бесконечной Вселенной, это действительно просто вопрос определения-о том, сделаете ли вы это.
Я бы предположил, что вы можете выполнить размещение курсора мыши в заданной области экрана, если вы не используете реальный (системный) курсор мыши.
например, вы можете создать изображение, чтобы действовать вместо вашего курсора, обрабатывать событие, которое при обнаружении mouseenter в вашей сцене, установите стиль на системном курсоре в "нет" (
sceneElement.style.cursor = 'none'
), затем вызовет скрытый элемент изображения, действующий как курсор, чтобы быть в любом месте, где вам нравится, в сцене на основе предопределенного перевод оси / ограничительной рамки.таким образом, независимо от того, как вы переместили реальный курсор, ваш метод перевода будет держать курсор изображения там, где вам это нужно.
edit:пример в jsFiddle с использованием представления изображения и принудительного движения мыши
вы можете определить положение указателя мыши, а затем переместить веб-страницу (с положением тела относительно), чтобы они зависали над тем, что вы хотите, чтобы они щелкнули.
для примера вы можете вставить этот код на страницу в консоли браузера (и обновлять потом)
var upvote_position = $('#answer-12878316').position(); $('body').mousemove(function (event) { $(this).css({ position: 'relative', left: (event.pageX - upvote_position.left - 22) + 'px', top: (event.pageY - upvote_position.top - 35) + 'px' }); });
вы не можете переместить мышь, но может заблокировать его. Примечание: что вы должны вызвать requestPointerLock в click event.
Маленький Пример:
var canvas = document.getElementById('mycanvas'); canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock || canvas.webkitRequestPointerLock; canvas.requestPointerLock();
документация и полный код примера:
https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Итак, я знаю, что это старая тема, но я сначала скажу, что это невозможно. Самое близкое в настоящее время - это блокировка мыши в одном положении и отслеживание изменений в ее x и y. эта концепция была принята - похоже-Chrome и Firefox. Он управляется тем, что называется Блокировка Мыши, и удар побег сломает его. От моего этой read-up, я думаю, что идея заключается в том, что он блокирует мышь в одном месте и сообщает о событиях движения, подобных события щелчка и перетаскивания.
вот эти документы:
FireFox:https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
хром:http://www.chromium.org/developers/design-documents/mouse-lockи вот довольно аккуратная демонстрация:http://media.tojicode.com/q3bsp/
вы не можете перемещать указатель мыши с помощью javascript, и, следовательно, по очевидным причинам безопасности. Лучший способ достичь этого эффекта-фактически поместить элемент управления под указатель мыши.
не может ли это просто быть сделано путем получения фактического положения указателя мыши, а затем вычисления и компенсации действий мыши sprite / scene на основе этой компенсации?
например, вам нужно, чтобы указатель мыши был внизу в центре, но он сидит слева вверху; скрыть курсор, использовать сдвинутое изображение курсора. Переместите движение курсора и сопоставьте ввод мыши, чтобы соответствовать перемещенному спрайту курсора (или "контроль") щелчки, когда/если границы поражены, пересчитайте. Если / когда курсор действительно попадает то, что вы хотите, чтобы это было, удалите компенсацию.
отказ от ответственности, а не разработчик игр.