AFrame模型动画在动画上改变轨迹

时间:2016-09-18 05:31:38

标签: aframe

我正在加载模型并尝试在动画事件中更改动画轨迹:

<a-entity three-model="loader:object;src:url(http://localhost:3000/upload/6tTxHz6JMPXMsGD8W/marine_anims_core.json);animation:run;animationDuration:0;enableAnimation:true" >
   <a-animation begin="mouseenter" attribute="three-model.animation" repeat="1" dur="1000" direction="alternate" from="walk" to="run"></a-animation>
</a-entity>

我很遗憾地看到这样的错误:

aframe-extras.loaders.min.js:688 [three-model] Animation "NaN" not found.
   playAnimation @ aframe-extras.loaders.min.js:688
   update @ aframe-extras.loaders.min.js:658
   updateProperties @ component.js:205
   value @ a-entity.js:427
   value @ a-entity.js:450
   value @ a-entity.js:579
   f @ a-animation.js:426
   (anonymous function) @ a-animation.js:136
   update @ Tween.js:339
   update @ Tween.js:81
   value @ a-scene.js:382
   value @ a-scene.js:407

我不确定这是否是由于A-Animation没有处理文本或什么?

2 个答案:

答案 0 :(得分:2)

我会使用事件集组件来更改值以响应事件:https://github.com/ngokevin/kframe/tree/master/components/event-set

<a-entity three-model="animation: walk" event-set="_event: mouseenter; three-model.animation: run;>

答案 1 :(得分:1)

<-animation>依赖于Tween.js(cf https://github.com/tweenjs/tween.js/用于文档),它基本上采用from值和to值,这些值在引擎盖下是数字的(是的,即使是颜色)。 from值在时间0处等于0,在时间dur处等于值1。从0更改为1将取决于所选的easing,但基本上您将被分配到您选择的attribute从 - * 0到 - 从* 0.1到 - 从* .0.2 ...到 - 从* 0.9到 - * 1。

所有这一切都说补间依赖于连续值,而不是离散值。步行和跑步之间的中间价值是什么?运行步行* .0.2?步行一个位快?运行慢?如果您的补间系统无法插值从fromto,那么您的动画(至少在当前0.3中使用的补间系统中)将不起作用。

您可以做的是在模型上添加addEventListener(),如果尚未运行则启动运行动画,等待所需时间,停止并再次开始步行动画。