XRSession: cancelAnimationFrame() 方法
cancelAnimationFrame()
方法是 XRSession
接口的方法,用于取消之前通过调用 requestAnimationFrame
请求的动画帧。
语法
js
cancelAnimationFrame(handle)
参数
handle
-
由先前调度动画回调的
requestAnimationFrame()
调用返回的唯一值。
返回值
无 (undefined
).
使用说明
如果找不到指定的 handle
,则此函数无效。
示例
在下面的示例中,我们看到了启动 WebXR 会话的代码(如果支持沉浸式 VR 模式)。会话启动后,会话会通过调用 requestAnimationFrame()
调度其第一个要渲染的帧。
底部显示的 pauseXR()
函数可用于暂停 WebVR 会话,本质上是通过取消任何挂起的动画帧回调来实现。由于每个帧回调都会调度下一个回调,因此删除回调会终止 WebXR 场景的更新。
js
const XR = navigator.xr;
let requestHandle = null;
let xrSession = null;
if (XR) {
XR.isSessionSupported("immersive-vr").then((isSupported) => {
if (isSupported) {
startXR();
}
});
}
function frameCallback(time, xrFrame) {
xrSession.requestAnimationFrame(frameCallback);
// Update and render the frame
}
async function startXR() {
xrSession = XR.requestSession("immersive-vr");
if (xrSession) {
stopButton.onclick = stopXR;
requestHandle = xrSession.requestAnimationFrame(frameCallback);
}
}
function pauseXR() {
if (xrSession && requestHandle) {
xrSession.cancelAnimationFrame(requestHandle);
requestHandle = null;
}
}
规范
规范 |
---|
WebXR 设备 API # dom-xrsession-cancelanimationframe |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。