3

ページに配置したい A-Frame シーンがありますが、指示した場合にのみロードするようにします。つまり、イベントを発行するかメソッドを呼び出すまで、レンダリングや実行を行うべきではありません。

<body>
  <!-- Don't play yet. -->
  <a-scene>
  </a-scene>
</body>
4

1 に答える 1

11

現在、組み込みの方法と文書化された方法はありませんが、後でこの機能が追加される予定です。ただし、これを手動で行う方法がいくつかあります。

作成<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();
于 2016-08-08T17:44:55.573 に答える