0

问题与用例:

在 WebXR 模式下,鼠标事件在浏览器内部被禁用或屏蔽,显然是因为 WebXR 开发人员认为您不想要或不能在 VR/AR 中使用鼠标。

但他们错了,假设太多,尤其是最终用户不能做的事情总是错误的。鼠标是一个指针,您可以握在手中而不是将它们拖到表面上,提供连续数据并且可以在许多 WebXR 案例中使用,但它们的决定使它们无法使用。

更糟糕的是,Web API 中存在一个错误,使得尽管 MDN 的兼容性图表在所有移动浏览器中都无法锁定指针,即使在非 WebXR 操作中也是如此,这进一步破坏了此类低成本设备的使用,包括在使用自定义 VR 代码时(polyfills)指针锁在 Android 浏览器上不起作用(官方演示)

我试过的

我尝试了通常的鼠标事件功能,例如:

//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();

显然事情没那么简单。也许解决方案就在 webvr/webxr polyfills 的某个地方,它们是在最终 API 被广泛采用之前开发的。

有任何想法吗?

4

0 回答 0