Pointer Lock 指针锁定 API
Pointer Lock API 使得鼠标完全脱离了浏览器窗口的限制,可以无限移动,同时隐藏鼠标。
通过它可以访问原始的鼠标运动(基于指针的相对位移 movementX / movementY),把鼠标事件的目标锁定到一个特定的元素,同时隐藏视图中的指针光标(可通过 ESC 显示),并且可以消除鼠标在一个方向上移动的边界限制。
这个 API 对于需要大量的鼠标输入来控制运动,旋转物体,以及更改项目的应用程序来说非常有用。对高度视觉化的应用程序尤其重要,例如那些使用第一人称视角的应用程序,以及 3D 视图和建模。
一、两个方法
1、requestPointerLock 方法
请求指针锁定。
element.requestPointerLock();
2、exitPointerLock 方法
退出指针锁定。
document.exitPointerLock();
二、两个事件
1、pointerlockchange 事件
当页面鼠标锁定状态改变的时候触发(如调用 requestPointerLock、exitPointerLock,用户按下 ESC 键等)
document.addEventListener('pointerlockchange', function () {
// ...
}, false);
2、pointerlockerror 事件
当调用 requestPointerLock 或 exitPointerLock 失败时触发。
三、属性
Document.pointerLockElement
指当前页面触发鼠标无限滚动的元素,通常使用语法为:
var element = document.pointerLockElement;
返回的是一个 DOM 元素对象,如果当前页面是非鼠标锁定状态,则返回值是 null。