我正在使用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上没有任何作用。有人建议如何解决这个问题吗?
答案 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浏览器中