使用a-frame设置加载动画

时间:2017-12-30 09:58:33

标签: aframe

我正在使用相框加载全景照片,下面的示例代码。它正在加载照片时显示白色屏幕,并持续几秒钟,这会产生糟糕的用户体验。我想在加载照片时添加加载动画,但找不到任何有用的指南。有人可以帮忙吗?

<a-scene>
  <a-assets>
    <img id="sky" src="sky.png">
  </a-assets>
  <a-sky src="#sky"></a-sky>
</a-scene>

2 个答案:

答案 0 :(得分:2)

我认为aframe 8会有一个内置的加载屏幕。与此同时,这是我目前如何处理从Ott​​ifox导出的aframe场景:

首先在a-scene标签之前和身体开始之后我有这个标记:

<div id="splash">
  <div class="loading"></div>
</div>

然后在css文件中:

#splash {
  position: absolute;

  display: flex;
  align-items: center;
  justify-content: center;

  top: 0;
  bottom: 0;
  left: 0;
  right: 0;

  width: 200px;
  height: 200px;

  margin: auto;
}

@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

.loading {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 0.25rem solid rgba(255, 255, 255, 0.2);
  border-top-color: white;
  animation: spin 1s infinite linear;
}

最后在main.js

document.addEventListener('DOMContentLoaded', function() {
    var scene = document.querySelector('a-scene');
    var splash = document.querySelector('#splash');
    scene.addEventListener('loaded', function (e) {
        splash.style.display = 'none';
    });
});

您可以在此处查看示例中的源代码,以便一起查看: http://ottifox.com/examples/space/index.html

答案 1 :(得分:1)

我可以指出你正确的方向。一般来说;首先创建一些东西,一切都加载;然后加载后隐藏它,或做任何你想做的事。

例如,创建一个具有大z-index的全屏div,它可以显示一些加载器动画。然后使用javascript - 正常方式或A-Frame推荐方式(为它构建组件) - 隐藏div。

window.onload = function() {
  /* hide loading div */
}
加载整个页面后会触发

window.onload事件,包括图像 - 这正是您所需要的。