Я будую гру HTML5, і я намагаюся навести курсор миші на певний елемент управління певною подією, щоб переміщення у певному напрямку завжди мало однаковий результат. Чи можливо це?
Я будую гру HTML5, і я намагаюся навести курсор миші на певний елемент управління певною подією, щоб переміщення у певному напрямку завжди мало однаковий результат. Чи можливо це?
Відповіді:
Отже, я знаю, що це стара тема, але спершу скажу, що це неможливо. Найближчим на даний момент є фіксація миші в одному положенні та відстеження змін у своїх x та y. Ця концепція була прийнята - схоже - Chrome і Firefox. Це управляється тим, що називається Замиканням миші , і потрапляння втечі зламає це. З мого короткого ознайомлення я думаю, що ідея полягає в тому, що вона блокує мишу в одному місці та повідомляє про події руху, схожі на події клацання та перетягування.
Ось документація щодо випуску:
FireFox: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Chrome: http://www.chromium.org/developers/design-documents/mouse-lock
І ось досить акуратна демонстрація: http://media.tojicode.com/q3bsp/
Не можна переміщувати курсор миші за допомогою JavaScript.
Подумайте про наслідки на секунду, якщо зможете;)
Запустіть його як CGI-скрипт за допомогою простого http-дзвінка, AJAX, незалежно від цього - з координатами, до яких потрібно перемістити мишу, наприклад:
http://localhost:9876/cgi/mousemover?x=200&y=450
PS: Для будь-якої проблеми є сотні виправдань, чому і як - цього не можна і не слід робити .. Але в цьому нескінченному Всесвіті це справді лише питання визначення - чи ВАС зробить це.
Я думаю, ви могли б встановити курсор миші на задану область екрану, якби ви не використовували реальний (системний) курсор миші.
Наприклад, ви можете створити зображення, щоб діяти замість курсору, обробляти подію, яка при виявленні миші у вашій сцені встановила стиль системного курсору на "none" ( sceneElement.style.cursor = 'none'
), а потім виведе прихований елемент зображення, що діє як курсор, де ви хочете, щоб у сцені, базуючись на заздалегідь визначеному перекладі осі / обмежувального поля.
Таким чином, незалежно від того, як ви перемістили реальний курсор, ваш метод перекладу зберігатиме курсор зображення там, де вам це потрібно.
edit: приклад у jsFiddle з використанням зображення зображення та примусового руху миші
Чудове запитання. Це дійсно щось не вистачає в API браузера Javascript. Я також працюю над грою WebGL зі своєю командою, і нам потрібна ця функція. Я відкрив проблему про bugzilla Firefox, щоб ми могли почати говорити про можливість існування API, щоб дозволити блокування миші. Це стане в нагоді для всіх розробників ігор HTML5 / WebGL там.
Якщо вам подобається, завітайте та залиште коментар зі своїми відгуками та підтвердіть питання:
https://bugzilla.mozilla.org/show_bug.cgi?id=630979
Дякую!
Ви можете виявити положення вказівника миші, а потім перемістити веб-сторінку (з відношенням положення тіла), щоб вони навели курсор на те, що ви хочете, щоб вони натискали.
Наприклад, ви можете вставити цей код на поточну сторінку в консолі веб-переглядача (і оновити після цього)
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'
});
});
document.getElementByID('thingtoclick').click();
Ви не можете перемістити мишу, але можете заблокувати її. Зауважте: що вам потрібно викликати requestPointerLock у події клацання.
Маленький приклад:
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
Ви не можете переміщувати вказівник миші за допомогою javascript і, таким чином, з очевидних міркувань безпеки. Найкращим способом досягти цього ефекту було б фактично розмістити елемент управління під вказівником миші.
Чи не можна цього просто зробити, встановивши фактичне положення вказівника миші, а потім обчислити та компенсувати дії спрайт / сцени миші на основі цієї компенсації?
Наприклад, вам потрібен вказівник миші на нижній центр, але він сидить у верхньому лівому куті; прихойте курсор, використовуйте зміщене зображення курсору. Перемістіть рух курсору та введіть карту миші, щоб відповідати переставленим клавішам спрайту курсора (або "управління"). Якщо / коли курсор насправді потрапить на точку, яку ви хочете, це буде, видаліть компенсацію.
Відмова, не розробник ігор.