通过A-Frame的VR模式按钮隐藏页面元素

时间:2016-10-22 17:56:46

标签: javascript aframe

我使用带有嵌入属性的A-Frame。

请参阅此codepen:

http://codepen.io/ymcheung/full/zKyyqX/

<a-scene embedded>
    <a-sky src="https://raw.githubusercontent.com/aframevr/aframe/master/examples/boilerplate/panorama/puydesancy.jpg" rotation="0 -130 0"></a-sky>
</a-scene>
// .a-enter-vr-button is supplied by A-Frame
var sceneVRButton = document.querySelector('.a-enter-vr-button');

单击右下角的VR模式按钮,即使在移动设备中进入VR-Glass模式,桌面上也会进入全屏模式。

在移动模式下,工具栏仍保留在屏幕上,我想暂时隐藏它。

function hideinHome() 
{
    document.querySelector('.floatingBar').style.opacity = 0;
}

sceneVRButton.addEventListener('click', hideinHome, false);

但是,似乎A-Frame的DOM后来加载的是javascript。

在Chrome的控制台中有以下消息:

Uncaught TypeError: Cannot read property 'addEventListener' of null

是否有任何方法可以倾听&#39;到A-Frame的DOM或在移动设备中进入全屏模式?

谢谢!

1 个答案:

答案 0 :(得分:1)

编写A-Frame组件,这样您就不必手动等待初始化。

AFRAME.registerComponent('hide-on-enter-vr-click', {
  schema: {type: 'selector'},

  init: function () {
    var element = this.data;
    var button = this.el.querySelector('.a-enter-vr-button');
    button.addEventListener('click', function () {
      element.style.opacity = 0;
    });
  }
});

然后将其挂钩。

<a-scene hide-on-enter-vr-click=".floatingBar"></a-scene>