Javascript 从tween.js中提取tween值
如果我有一个运行时间为2000ms的tween,并且我想在1000ms时提取tween值,我将如何进行这项工作?我正在使用Tween.js@ 现在,根据我所能收集到的信息,我应该能够.update(tValue)并让它在给定的tValue onUpdate上记录正确的tweened值。相反,position.y只输出起始位置值 Github页面的第一个常见问题提示了这种能力,但我似乎无法让它发挥作用 谢谢 只需使用Javascript 从tween.js中提取tween值,javascript,tween,Javascript,Tween,如果我有一个运行时间为2000ms的tween,并且我想在1000ms时提取tween值,我将如何进行这项工作?我正在使用Tween.js@ 现在,根据我所能收集到的信息,我应该能够.update(tValue)并让它在给定的tValue onUpdate上记录正确的tweened值。相反,position.y只输出起始位置值 Github页面的第一个常见问题提示了这种能力,但我似乎无法让它发挥作用 谢谢 只需使用setTimeout()并使计时器在1000毫秒后运行即可: setTimeout
setTimeout()
并使计时器在1000毫秒后运行即可:
setTimeout(function() {
console.log(position.y);
}, 1000);
快速查看会发现,它将其所有内容保留在Tween.Easing
的“名称空间”中,默认的Easing函数是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);
这样的办法应该行得通
我刚刚想起我刚才也有一个相关的答案,它更多地讨论了“如果你感兴趣的话”的“理论”。我实际上不想运行tween,只是在给定的时间提取值。啊。用t.update(1000)
替换t.start()
时会发生什么?它运行.onUpdate,但位置.y值不变。我可以使用不同的时间值多次运行.update(),它的响应完全相同。试试这个:t.\u easingFunction(1000)
。它吐出了什么?你期待的是什么样的放松功能?这对我来说非常有用。谢谢@Caseyee很多easing框架都有签名接口,看起来更像我的助手GetWeenedValue
,另一个答案也谈到了这一点。
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);