A框自动进入全屏模式Oculus Go

时间:2018-08-17 15:10:54

标签: aframe

我正在使用A框架来构建VR网站。我希望进入vr模式而不必按下oculus眼镜上的“ enter-vr”眼镜不止一次。对于我的应用程序,大多数html(包括a-scene)都已重新加载(但页眉/页脚保留在原处)。对于PC浏览器,此代码有效:

HTML:

<a-scene id="eqvrscene">
</a-scene>
<button id="enterVRButton" onclick="$('#eqvrscene')[0].enterVR();"> Enter VR </button>

JS:

$("#enterVRButton")[0].click();

但是不幸的是,这在oculus上没有任何作用。有人建议如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

这可能相关,也可能无关,但是您在<a-scene>标记中有错字。

很难从代码中分辨出来,但是确定单击按钮时场景已加载吗?

尝试先监听场景中的loaded事件,然后为按钮设置一个监听器:

// Scene entity element
var scene = document.querySelector('a-scene');

// Button element
var enterVRButton = document.querySelector('#enterVRButton');


// Check if scene has loaded, otherwise set up listener for when it does.
if (scene.hasLoaded) {
  addButtonListener();
} else {
  scene.addEventListener('loaded', addButtonListener);
}

// Add our button click listener.
function addButtonListener() {
  enterVRButton.addEventListener('click', function() {
    scene.enterVR();
  });
}

在A-Frame master分支中,有一个API用于添加用于进入VR的自定义按钮,因此可以在0.9.0中发布。请参阅master文档:https://aframe.io/docs/master/components/vr-mode-ui.html#specifying-a-custom-enter-vr-button

如果您要尝试自动执行click事件,我认为这在许多浏览器中都行不通,因为enterVR()需要用户交互。

答案 1 :(得分:0)

这是不可能的。 WebVR API不允许自动进入VR模式。它需要像单击一样无法合成的用户手势,就像您的示例一样。唯一的例外是当用户手势后页面进入VR模式时,新页面被授予在导航后自动进入VR的权限。 A-Frame已经解决了这个问题,不需要额外的应用程序代码。

Firefox还允许渗透在页面重新加载时自动进入VR。因此,您可能会在台式机上看到不同的行为。您的代码不是必需的,A-Frame自动已经自动进入VR。这种情况不在Oculus浏览器中