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 |
瀏覽器相容性
載入中…