如何以编程方式延迟或加载 A-Frame 场景?
How to defer or load an A-Frame scene programmatically?
我有一个要放在页面上的 A 帧场景,但我希望它仅在我告诉它时才加载。这意味着它不应该呈现或 运行 直到我发出一个事件或调用一个方法。
<body>
<!-- Don't play yet. -->
<a-scene>
</a-scene>
</body>
目前没有内置+记录的方式,但稍后会有一个功能。但是,有几种方法可以手动执行此操作:
创建<a-node>
节点(每个 <a-entity>
继承的节点将阻止场景加载,直到它调用 .load()
事件。
在场景中创建一个虚拟节点。并在准备就绪后调用 .load()
。
<a-node id="dummy"></a-node>
document.getElementById('dummy').load();
杠杆资产系统
您可以创建一个资产,除非您告诉它,否则永远不会加载,并将超时设置为有效无限期(稍后我们将添加一个不超时的功能)。
<a-scene>
<a-assets timeout="999999999">
<a-asset-item id="trigger" src="NEVERLOADUNTILITELLITTO.whatever"></a-asset-item>
</a-assets>
</a-scene>
然后触发。
document.querySelector('#trigger').load();
仅在准备就绪时注入场景
您可以将场景保存在单独的文件、模板中,或作为字符串,或使用具有视图概念的框架。只有在准备好渲染时才将场景注入 DOM。这是工作量最多,但目前最不透气的方法。
sceneEl.appendChild(document.createRange().createContextualFragment(str));
尽快暂停场景
这将暂停场景渲染。然而,场景可能已经初始化了一些组件并渲染了几帧。所以不是密不透风。
document.querySelector('a-scene').pause();
我有一个要放在页面上的 A 帧场景,但我希望它仅在我告诉它时才加载。这意味着它不应该呈现或 运行 直到我发出一个事件或调用一个方法。
<body>
<!-- Don't play yet. -->
<a-scene>
</a-scene>
</body>
目前没有内置+记录的方式,但稍后会有一个功能。但是,有几种方法可以手动执行此操作:
创建<a-node>
节点(每个 <a-entity>
继承的节点将阻止场景加载,直到它调用 .load()
事件。
在场景中创建一个虚拟节点。并在准备就绪后调用 .load()
。
<a-node id="dummy"></a-node>
document.getElementById('dummy').load();
杠杆资产系统
您可以创建一个资产,除非您告诉它,否则永远不会加载,并将超时设置为有效无限期(稍后我们将添加一个不超时的功能)。
<a-scene>
<a-assets timeout="999999999">
<a-asset-item id="trigger" src="NEVERLOADUNTILITELLITTO.whatever"></a-asset-item>
</a-assets>
</a-scene>
然后触发。
document.querySelector('#trigger').load();
仅在准备就绪时注入场景
您可以将场景保存在单独的文件、模板中,或作为字符串,或使用具有视图概念的框架。只有在准备好渲染时才将场景注入 DOM。这是工作量最多,但目前最不透气的方法。
sceneEl.appendChild(document.createRange().createContextualFragment(str));
尽快暂停场景
这将暂停场景渲染。然而,场景可能已经初始化了一些组件并渲染了几帧。所以不是密不透风。
document.querySelector('a-scene').pause();