隐藏嵌入式aframe场景

时间:2018-03-16 13:47:36

标签: javascript aframe webvr

我想以编程方式隐藏和显示我的嵌入式aframe场景。加载网站时隐藏了场景,但是我只能让它像这样延迟工作:

window.onload = function () {
setTimeout(function() { document.getElementById("scene-page").setAttribute("hidden", ""); }, 500);
}

当我不添加此延迟时,即使再次将其设置为“可见”,场景仍保持隐藏状态。具体来说,画布的大小似乎调整为0px:

<canvas class="a-canvas a-grab-cursor" data-aframe-canvas="true" width="0" height="0" style="width: 0px; height: 0px;"></canvas>

使其可见的唯一方法是调整浏览器窗口的大小,然后似乎调整画布大小。

有没有更好的方法可以毫不拖延地隐藏场景?

1 个答案:

答案 0 :(得分:2)

从我看到的内容(herehere等帖子),如果您在加载整个画布之前设置display: none,则canvas / renderer / camera属性未能正确设置。

我尝试等待a-scene loaded / renderstart事件,window.onload和内部实体,但它似乎还在弄乱画布设置。

调整窗口大小时它工作的原因是因为场景中有resize的监听器,它使用画布width / height相应地更新所有这些内容。我不确定是否可以手动调用resize

查看here - &gt;只需搜索this.resize,就会有3次点击,其中一次点击a-scene

如果具有固定位置的a-frame画布前面放置空白<div>似乎更容易,更安全,该画布将从display: none切换到block。现场小提琴here

场景启动并运行后,您可以切换其所需的display!现场小提琴here