如果我的补间动画的运行时间为2000毫秒,而我想提取1000ms的补间值,我该怎么做呢?我正在使用Tween.js @ http://github.com/sole/tween.js

var position = {y: 0};

t = new TWEEN.Tween(position)
    .to({ y: 300 })
    .onUpdate( function() {
      console.log(position.y);
    });

t.start(); // correctly runs the tween and logs tweened position.y values

现在,从我可以收集到的信息中,我应该能够进行.update(tValue)并使其在给定的tValue onUpdate上记录正确的补间值。相反,position.y仅输出起始位置值。

Github页面上的第一个FAQ问题暗示了这种能力,但我似乎无法使其正常工作。

谢谢!

最佳答案

快速浏览tween.js source会发现它将所有tweening functions保留在Tween.Easing“namespace”中,默认的缓动函数是TWEEN.Easing.Linear.EaseNone

它的缓动功能与我的预期有所不同,但是一旦知道了要做什么,就可以很容易地独立于体系结构的其余部分使用。

function getTweenedValue(startVal, endVal, currentTime, totalTime, tweener) {
    var delta = endVal - startVal;
    var percentComplete = currentTime/totalTime;
    tweener ||= TWEEN.Easing.Linear.EaseNone;

    return tweener(percentComplete) * delta + startVal
}

var val = getTweenedValue(0,300,1000,2000);

这样的事情应该起作用。

我只是记得我前段时间也有一个相关的答案,如果您感兴趣的话,它会更多地讨论easing/tweening functions的“理论”。

关于javascript - 从tween.js中提取补间值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8935638/

10-11 05:51