我想以编程方式隐藏和显示我的嵌入式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>
使其可见的唯一方法是调整浏览器窗口的大小,然后似乎调整画布大小。
有没有更好的方法可以毫不拖延地隐藏场景?
答案 0 :(得分:2)
从我看到的内容(here或here等帖子),如果您在加载整个画布之前设置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!