XRSession:requestHitTestSourceForTransientInput() 方法
XRSession
接口的 requestHitTestSourceForTransientInput()
方法返回一个 Promise
,该 Promise 解析为一个 XRTransientInputHitTestSource
对象,该对象可以传递给 XRFrame.getHitTestResultsForTransientInput()
。
语法
js
requestHitTestSourceForTransientInput(options)
参数
返回值
一个 Promise
,该 Promise 解析为一个 XRTransientInputHitTestSource
对象。
异常
requestHitTestSourceForTransientInput()
不会抛出真正的异常,而是会拒绝返回的 Promise,并使用一个 DOMException
作为拒绝原因,具体如下:
NotSupportedError
DOMException
-
如果
XRSystem.requestSession()
中未启用“hit-test”功能,则会抛出此异常。 InvalidStateError
DOMException
-
如果会话已结束,则会抛出此异常。
NotAllowedError
DOMException
-
如果请求过多,则会抛出此异常。出于隐私原因,某些用户代理可能会限制使用次数。
示例
请求瞬态命中测试源
要请求命中测试源,请启用“hit-test”会话功能启动一个 XRSession
。接下来,配置命中测试源并将其存储以供以后在帧循环中使用,并调用 XRFrame.getHitTestResultsForTransientInput()
获取结果。
js
const xrSession = navigator.xr.requestSession("immersive-ar", {
requiredFeatures: ["local", "hit-test"],
});
let transientHitTestSource = null;
xrSession
.requestHitTestSourceForTransientInput({
profile: "generic-touchscreen",
offsetRay: new XRRay(),
})
.then((touchScreenHitTestSource) => {
transientHitTestSource = touchScreenHitTestSource;
});
// frame loop
function onXRFrame(time, xrFrame) {
let hitTestResults = xrFrame.getHitTestResultsForTransientInput(
transientHitTestSource,
);
// do things with the transient hit test results
}
规范
规范 |
---|
WebXR 命中测试模块 # dom-xrsession-requesthittestsourcefortransientinput |
浏览器兼容性
BCD 表格仅在浏览器中加载