Нет перемещения курсора при блокировке указателя

#javascript #jquery #html #google-chrome #three.js

#javascript #jquery #HTML #google-chrome #three.js

Вопрос:

Я использую блокировку указателя для захвата курсора в игре, которую я разрабатываю на JavaScript с three.js . Я выполнил свой базовый поиск в Google, но, похоже, не могу понять, почему в Chrome OS курсор, похоже, не перемещается. Если вы посмотрите на http://scheib.github.io/HTMLMisc/PointerLockAndFullscreen.html Блокировка указателя работает просто отлично, и есть даже хороший «курсор», который соответствует движению!

Вывод на консоль JavaScript (ведение журнала — это я):

Я «фабрикую» перемещение X / Y с

 if (evt.movementX === undefined) {
    evt.movementX = evt.screenX - lastx;
    evt.movementY = evt.screenY - lasty;
    lastx = evt.screenX;
    lasty = evt.screenY;
}
  

На случай, если вам интересно, я просто настраиваю базовую графику.
Такой базовый. Ничего себе.

Ответ №1:

Курсор не перемещается, потому что вы его «заблокировали». Но evt.movementX и evt.movementY указывает направление движения.

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

Ответ №2:

При блокировке указателя доступны только свойства movementX и movementY. Все остальные «обычные» координаты положения намеренно устанавливаются равными нулю.

В режиме блокировки указателя воспринимается, что курсора нет, только движение мыши, поэтому для курсора, которого не существует, нет (ScreenX, screenY), а также (offsetX, offsetY) по той же причине.

Только (movementX, movementY) по дизайну.