Pointer Lock API
2021-07-11 02:06
标签:err client 基于 实现 这一 int cli 用户 目标 Pointer Lock API 提供了基于鼠标移动随着时间的增量。 指针锁定和 鼠标捕获有关。鼠标获指的是当鼠标拖动的时候持续发送事件,但是当鼠标按钮被放开时它就会停止。 Pointer Lock API 通过添加一个新方法扩展了 目前 Pointer Lock API 也扩展了 新的属性被用来访问当前绑定的元素,并将元素命名为 新的方法用来退出指针锁定 和 当指针状态发生变化的时候。如 当存在因调用错误 当指针锁定被启动之后,正常的 无论鼠标锁定状态是怎样的, 当鼠标被解除锁定,系统光标可以退出并重新进入浏览器窗口。如果发生这种情况,movementX 和 movementY 可能会被设置成0。 指针锁定一次只能锁定一个 iframe。如果你锁定了一个 iframe,你不能试图锁定另外一个 iframe 然后把目标转移到这个 iframe 上;指针锁定将会出错。为了避免这一问题,首先解锁那个锁定的 iframe,然后再锁定另外一个。 在 Pointer Lock API 标签:err client 基于 实现 这一 int cli 用户 目标 原文地址:https://www.cnblogs.com/chenjy1225/p/9661328.html
是3D游戏最常见的方式,你可以通过鼠标来控制视角,消除了在一个方向上的移动限制。基本概念
指针锁定相较鼠标捕获在以下方面有所不同:
Function/Properties
requestPointerLock()
dom
元素 requestPointerLock()
element.requestPointerLock = element.requestPointerLock || element.mozRequestPointerLock || element.webkitRequestPointerLock;
element.requestPointerLock();
requestPointerLock()
的实现和requestFullScreen
以及Fullscreen API
紧紧地绑在一起的。
保证在指针锁定之前进入了全屏模式。锁定指针的过程是异步。
使用pointerlockchange
和pointerlockerror
事件表示请求成功或是失败了。pointerLockElement/exitPointerLock()
Document
接口,添加了新的属性和方法。pointerLockElement
document.pointerLockElement = document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement;
1.pointerLockElement可以用来确定是否有被指针锁定的元素
if(document.pointerLockElement){
}else {
}
2.pointerLockElement用来获取被指针锁定的元素
if (document.pointerLockElement === someElement) {
}
requestPointerLock()
一样也是异步的,使用pointerlockchange
和 pointerlockerror
事件表示请求成功或是失败了。
document.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock;
document.exitPointerLock();
pointerlockchange
requestPointerLock()
,exitPointerLock()
时会触发pointerlockchange
事件。这是一个简单事件所以不包含任何的额外数据。
Chrome
:webkitpointerlockchange
Firefox
:mozpointerlockchange
pointerlockerror
requestPointerLock()
或者exitPointerLock()
,会触发pointerlockchange
事件。这是一个简单事件所以不包含任何的额外数据。
Chrome
:webkitpointerlockerror
Firefox
:mozpointerlockerror
鼠标事件扩展
Pointer lock API
使用 movement
属性扩展了标准的MouseEvent
。movementX
、movementY
提供了鼠标在X
和Y
轴位置变化锁定状态
MouseEvent
属性clientX
, clientY
, screenX
, 和 screenY
,保持不变,就像鼠标没有在移动一样。 movementX 和 movementY 属性持续提供鼠标的位置变化。如果鼠标在一个方向上持续移动,movementX 和 movementY的值是没有限制的。不存在鼠标光标的概念,而且光标无法移到窗口之外,而且也不会被屏幕边缘所固定。未锁定状态
movementX
和 movementY
参数一直有效,并且为了方便起见,甚至在未锁定状态也是有效的。iframe 的限制
iframe
默认的情况下, sandboxed
iframes 会阻止指针锁定。避免这种限制的能力,即以属性/值 组合的形式 , 有望很快在 Chrome 中出现。
下一篇:c# 调用微吼直播API