Pointer Lock API中文叫做指针锁定或者鼠标锁定。Pointer Lock API提供了一种输入方法,这种方法是基于鼠标随着时间推移的运动的(也就是说,deltas),而不仅是鼠标光标的绝对位置。通过它可以访问原始的鼠标运动,把鼠标事件的目标锁定到一个单独的元素,这就消除了鼠标在一个单独的方向上到底可以移动多远这方面的限制,并从视图中删去光标。
用一句话说明Pointer Lock API的作用就是:Pointer Lock API可以让你的鼠标无限移动,脱离浏览器窗体的限制!
这对于一些需要鼠标控制的应用非常有用。举个例子:某3D VR女友的游戏,你鼠标向上移动,则你的视角就会往下。
在默认网页环境下,你鼠标移动到浏览器上边缘就不能再往上了,结果,本来还差一点点角度就能看到胖次,结果卡在了关键地方,岂不非常影响游戏体验。
但是如果使用了Pointer Lock API,就不会出现这样的问题,鼠标可以无限移动,坐标可以无限增大,完全脱离了浏览器窗口的限制,可以完美享受沉浸式操作体验。
目前,Pointer Lock API共支持3个属性,2个方法和2个事件,分别如下:
3个属性:
- Document.pointerLockElement
- Document.onpointerlockchange
- Document.onpointerlockerror
2个方法:
- Element.requestPointerLock()
- Document.exitPointerLock()
2个事件
- pointerlockchange
- pointerlockerror
其中,2个事件和其中2个属性是一一对应的,因此,我们实际上需要了解的知识点是下面这些:
Document.pointerLockElement,以及Element.requestPointerLock(),Document.exitPointerLock()以及pointerlockchange和pointerlockerror事件。
下面我们一一的介绍他们的用法。
Document.pointerLockElement
指当前页面触发鼠标无限滚动的元素,通常使用语法为:
var element = document.pointerLockElement;
返回的是一个DOM元素对象,如果当前页面是非鼠标锁定状态,则返回值是null。
Element.requestPointerLock()
可以让页面进入鼠标锁定状态(鼠标直接消失),鼠标无限滚动,坐标无限变化。通常使用语法为:
var element.requestPointerLock();
Document.exitPointerLock()
让页面从鼠标锁定状态退出,通常使用语法为:
document.exitPointerLock();
浏览器默认支持按下ESC键退出鼠标锁定状态,但是用户有时候更习惯于点击取消等,此时就可以使用document.exitPointerLock()进行设置。
pointerlockchange事件
当页面鼠标锁定状态改变的时候触发。例如:
document.addEventListener('pointerlockchange', function () { // ... }, false);
pointerlockerror事件
当页面鼠标锁定失败的时候触发。例如当你试图同时锁定同一个页面的多个<iframe>时候,就会触发这个出错事件。
本文只是介绍了Pointer Lock API的属性,事件和方法,下面我们再来一篇实战。
: » Pointer Lock API大全
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/251294.html