ページに配置したい A-Frame シーンがありますが、指示した場合にのみロードするようにします。つまり、イベントを発行するかメソッドを呼び出すまで、レンダリングや実行を行うべきではありません。
<body>
<!-- Don't play yet. -->
<a-scene>
</a-scene>
</body>
ページに配置したい A-Frame シーンがありますが、指示した場合にのみロードするようにします。つまり、イベントを発行するかメソッドを呼び出すまで、レンダリングや実行を行うべきではありません。
<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();