В настоящее время нет встроенного + задокументированного способа, но позже будет возможность для этого. Однако есть несколько способов сделать это вручную:
Создать <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();
person
ngokevin
schedule
08.08.2016