如何通过" animationend"来启动a-frame动画。 javascript功能?

时间:2018-03-30 13:47:34

标签: javascript html animation aframe collada

我从未使用过html,javascript或a-frame,我想让三个collada文件可见,然后一个接一个地隐藏(如关键帧动画序列)并循环播放该动画。 该代码有效,除了循环动画的可能性。

<script src="https://aframe.io/releases/0.7.1/aframe.min.js"></script>
<script src="https://rawgit.com/donmccurdy/aframe-extras/master/dist/aframe- 
extras.loaders.min.js"></script>
<script src="play-all-model-animations.js"></script>

<body>

<a-scene>

<a-assets>
<a-asset-item id="t1" src="1a.gltf"></a-asset-item>
<a-asset-item id="t2" src="2a.gltf"></a-asset-item>
<a-asset-item id="t3" src="3a.gltf"></a-asset-item>     
</a-assets>


<a-gltf-model id="model1" src="#t1" visible="false">
<a-animation id="anim1" attribute="visible" begin="1000"; dur="2000"; 
 to="false">
</a-animation>  
</a-gltf-model>

<a-gltf-model id="model2" src="#t2" visible="false">
<a-animation id="anim2"   attribute="visible" begin="2000"; dur="2000"; 
to="false">
</a-animation> 
</a-gltf-model>

<a-gltf-model id="model3" src="#t3" visible="false">
<a-animation id="anim3" attribute="visible" begin="3000";  dur="2000"; 
to="false">
</a-animation> 
</a-gltf-model>


<script>
anim1.addEventListener('animationend', function () {
model1.setAttribute('visible', 'true');
});
</script>

<script>
anim2.addEventListener('animationend', function () {
model1.setAttribute('visible', 'false');
model2.setAttribute('visible', 'true');
});
</script>

<script>
anim3.addEventListener('animationend', function () {
model2.setAttribute('visible', 'false');
model3.setAttribute('visible', 'true');

});
</script>

</a-scene>

</body>

我想我必须在&#34; animationend函数&#34;中启动每个动画。而不是用&#34;开始&#34;开始动画。时间。 有没有人知道如何开始,例如动画id =&#34; anim1&#34;通过javascript函数? 我会赞美任何形式的帮助。

1 个答案:

答案 0 :(得分:0)

您需要通过animationend

收听animation.addEventListener('animationend', function)事件

并根据begin考虑此类设置触发element.emit('begin')事件:

<a-element id="element">
   <a-animation id="animation"></a-animation>
</a-element>

查看我的fiddle