我正在使用相框加载全景照片,下面的示例代码。它正在加载照片时显示白色屏幕,并持续几秒钟,这会产生糟糕的用户体验。我想在加载照片时添加加载动画,但找不到任何有用的指南。有人可以帮忙吗?
<a-scene>
<a-assets>
<img id="sky" src="sky.png">
</a-assets>
<a-sky src="#sky"></a-sky>
</a-scene>
答案 0 :(得分:2)
我认为aframe 8会有一个内置的加载屏幕。与此同时,这是我目前如何处理从Ottifox导出的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事件,包括图像 - 这正是您所需要的。