You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

A-Frame开发:如何检测用户退出AR模式的对应事件或属性

A-Frame AR模式退出检测实现方案

可订阅的触发事件

  • A-Frame的<a-scene>组件原生提供exit-vr事件,不管是用户主动按返回键、退出全屏,还是系统强制中断AR会话,只要AR会话结束就会触发该事件。
  • 可以配合enter-vr事件标记当前会话类型,避免VR模式退出时误触发你的3D模式适配逻辑。
    示例代码:
const sceneEl = document.querySelector('a-scene');
// 进入会话时标记是否为AR模式
sceneEl.addEventListener('enter-vr', () => {
  sceneEl.dataset.isARSession = sceneEl.is('ar-mode') ? 'true' : 'false';
});
// 监听会话退出事件
sceneEl.addEventListener('exit-vr', () => {
  if (sceneEl.dataset.isARSession === 'true') {
    // 这里执行你的相机参数重置、普通3D模式切换逻辑
    resetCameraConfig();
    sceneEl.dataset.isARSession = 'false';
  }
});

可查询的状态属性

你可以随时调用sceneEl.is('ar-mode')获取当前是否处于AR运行状态,该属性为布尔值,AR退出后会自动变为false,你也可以用它做状态校验的兜底判断。

极端场景兜底方案

如果遇到部分设备上系统强制中断会话没有触发exit-vr的极端情况,可以绑定WebXR原生会话的end事件做二次兜底:

sceneEl.addEventListener('enter-vr', () => {
  if (sceneEl.xrSession && sceneEl.is('ar-mode')) {
    sceneEl.xrSession.addEventListener('end', () => {
      // AR会话彻底结束时执行适配逻辑
      resetCameraConfig();
    });
  }
});

内容的提问来源于stack exchange,提问作者earok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 14:24:03