Animation 在K帧(VR)中模拟CSS关键帧动画

Animation 在K帧(VR)中模拟CSS关键帧动画,animation,aframe,virtual-reality,Animation,Aframe,Virtual Reality,我想在单个实体(例如:)的单个属性(例如:缩放)上创建一个动画,该属性将使用。这可能吗 例如,这将是一个简单的情况: <a-scene> <a-circle position="0 1.25 -5" color="#F55" radius="1" scale=".1 .1 1" animation__scale="property: scale; dir: normal; dur: 500; easing: easeInSin

我想在单个实体(例如:)的单个属性(例如:缩放)上创建一个动画,该属性将使用。这可能吗

例如,这将是一个简单的情况:

<a-scene>
  <a-circle 
    position="0 1.25 -5" 
    color="#F55" 
    radius="1" 
    scale=".1 .1 1"
    animation__scale="property: scale; dir: normal; dur: 500; easing: easeInSine; loop: true; to: 1 1 1"
  >
  </a-circle>
</a-scene>

我想,比如说,在前500毫秒从.1.1到.5.5 1,然后在下一个500毫秒保持在.5.5 1,然后在下一个200毫秒回到.1.1 1,然后在整个过程中不断循环


这是可能的吗?

您可以在组件中以菊花链方式链接动画,检查哪个动画结束并开始下一个动画。
在您的情况下,这将是

动画1结束->等待500毫秒并开始动画2->动画2结束->等待200毫秒并开始动画1


您可以通过简单地侦听
动画\uuid]-complete
事件并发出另一个事件来实现这一点。
如果只是将它们链接起来,就可以在开始事件列表上映射多个侦听器。
但是,您希望为它们提供一些自定义等待期,这些等待期可以包含在映射函数中,也可以手动完成:

  el.addEventListener('animation__scale1-complete', function() {
    setTimeout(function(){
    el.emit('secondAnimation');
    },500);
  })
   el.addEventListener('animation__scale2-complete', function() {
    setTimeout(function(){
    el.emit('firstAnimation');
    },200);
  })

这里的工作小提琴:
请注意,我也会在
loaded
事件上触发第一个动画,以防它在加载之前触发。

这太棒了。非常感谢。