动态切换 A-Frame 的 vr-mode-ui

Posted

技术标签:

【中文标题】动态切换 A-Frame 的 vr-mode-ui【英文标题】:Toggle A-Frame's vr-mode-ui dynamically 【发布时间】:2017-08-10 23:07:38 【问题描述】:

我正在尝试根据我的代码中的一些规则动态隐藏/显示 A-Frame 的 vr-mode-ui<a-scene> 最初看起来像这样:

<a-scene id="vr-scene" vr-mode-ui="enabled: false">

在我的控制器中,我正在尝试根据标志启用和禁用它:

let scene = document.querySelector('#vr-scene');
if (showVR) 
  scene.setAttribute('vr-mode-ui', 'enabled: true');
 else 
scene.setAttribute('vr-mode-ui', 'enabled: false');

但是当这种切换发生时,我在控制台上收到一个错误,如下所示: TypeError: Cannot read property 'removeChild' of null

请告知这里出了什么问题。有没有更好的方法来启用/禁用 VR 按钮?

这是一个简单的代码笔:https://codepen.io/anon/pen/BdZWdz

步骤:

    点击启用 点击禁用 点击启用(VR 按钮不出现)

【问题讨论】:

您是否正在尝试禁用它,而它已经被禁用? 这里有两个问题,scene.setAttribute('vr-mode-ui', 'enabled: true'); 没有带回 vr 按钮。因此,下次它进入else 时,它仍然被禁用,因此出现错误。任何想法为什么 enabled 部分没有把它带回来! @ngokevin:我添加了一个代码笔来演示我遇到的问题。请看一看。感谢您的帮助。 【参考方案1】:

目前该组件不支持启用/禁用大部分按钮。更多的是一次性的事情。这可以修复,但会提出问题。

与此同时,使用 CSS 简单地切换按钮的可见性会更容易:

document.querySelector('.a-enter-vr-button').style.visible = 'none';

【讨论】:

谢谢。这行得通。我的一位同事帮助我弄清楚这是一个错误,他实际上给了我和你一样的解决方案。

以上是关于动态切换 A-Frame 的 vr-mode-ui的主要内容,如果未能解决你的问题,请参考以下文章

如何优化 A-Frame 中的 3D 对象以加快加载速度

A-Frame 简介03

为啥 a-frame 点击事件不起作用?

最新版 A-Frame 中的旋转天空

a-frame学习笔记

a-frame学习笔记—实体添加click事件