如何解决是否可以在 WebXR 模式下强制鼠标移动事件?
问题与用例:
在 WebXR 模式下,鼠标事件在浏览器内部被禁用或屏蔽,显然是因为 WebXR 开发人员认为您不想要或不能在 VR/AR 中使用鼠标。
但他们错了,假设太多,尤其是最终用户不能做的事情总是错误的。 鼠标是一个指针,有些指针可以握在手中而不是将它们拖到表面上,它们提供连续数据并且可以在许多 WebXR 情况下使用,但它们的决定使它们无法使用。
更糟糕的是,Web API 中存在一个 bug,尽管 MDN 的兼容性图表在所有移动浏览器中都无法实现指针锁定,即使在非 WebXR 操作中也是如此,这进一步破坏了此类低成本设备的使用,包括在使用时自定义 VR 代码(polyfills)Pointer Lock does Not Work on Android Browsers (official demo)
我的尝试
我尝试了常用的鼠标事件功能,例如:
//or document.addEventListener()
element.addEventListener('mousemove',(event)=>{
mouseX = event.pageX;
mouseY = event.pageY;
});
或:
window.onmousemove = (event) => {
mouseX = event.movementX;
mouseY = event.movementY;
}
或:
document.addEventListener( 'pointermove',onPointerMove );
function onPointerMove (event) {
pointer.x = event.clientX;
pointer.y = event.clientY;
}
我注意到每次点击指针时我都会得到那个瞬间的坐标(但不是在移动过程中),所以我尝试使用:
element.click()
在每一帧上,但它也不起作用,显然是因为点击是“合成的”。
我还尝试将焦点放在每一帧的窗口或元素上。
element.focus();
显然没那么简单。也许解决方案在于在最终 API 被广泛采用之前开发的 webvr/webxr polyfill。
有什么想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。