如何从audio.currentTime获取delta?

时间:2015-08-19 17:35:23

标签: javascript html5 animation audio three.js

我想将我的Three.js骨骼动画绑定到音轨。通常,要为模型制作动画,我会这样做:

var clock = new THREE.Clock();

function animate(){
    var delta = clock.getDelta();
    THREE.AnimationHandler.update(delta);
    requestAnimationFrame(animate);
}

但是现在我有一个我想要使用的HTML5音频对象,我可以从中获得audio.currentTime,但是将其转换为动画可以理解的增量的最佳方法是什么?

只是将audio.currentTime保存到动画函数之外的变量,然后从新audio.currentTime中减去它,还是需要更多的逻辑呢?就像用户稍微倒回轨道会发生什么?是否/应该delta是否为负且可以THREE.AnimationHandler处理那个或者我需要做Math.max(delta, 0)什么的?

2 个答案:

答案 0 :(得分:0)

未验证:从文档中,THREE.AnimationHandler.update需要毫秒。使用音频值的增量应该不起作用,因为它应该返回一个比率,而不是以毫秒为单位的时间。

最适合您更改audio.currentTime的情况的解决方案是使用currentTime类的THREE.Animation属性。

所以你可以简单地写一下渲染循环:

    myAnimation.currentTime = audio.currentTime ; 

答案 1 :(得分:0)

我最终做的是:

{{1}}

我不知道的是,这是否会产生任何我不知道的副作用。如果是这样的话,请告诉我。感谢。