XRSession: cancelAnimationFrame() 方法
cancelAnimationFrame() 方法是 XRSession 接口的一部分,用于取消之前通过调用 requestAnimationFrame 请求的动画帧。
语法
js
cancelAnimationFrame(handle)
参数
handle-
之前调用
requestAnimationFrame()来调度动画回调时返回的唯一值。
返回值
无(undefined)。
用法说明
如果找不到指定的 handle,则此函数无效。
示例
在下面的示例中,我们看到一段代码,如果支持沉浸式 VR 模式,则会启动 WebXR 会话。启动后,该会话将通过调用 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 Device API # dom-xrsession-cancelanimationframe |
浏览器兼容性
加载中…