例如,这个要点中提供的缓动函数:https://gist.github.com/gre/1650294将是完美的,但我不知道如何修改它们以便它们采用v0,v1和t参数,就像我目前的lerp函数一样:
_lerp2: function(v0, v1, t)
{
return (1 - t) * v0 + t * v1;
}
这里提供的宽容也很好:http://gizma.com/easing/但在这种情况下,我不理解"价值的变化"参数。即使我这样做,我可能仍然希望这些函数只接受三个参数,v0,v1和t。
参数如下:v0 =起始值,v1 =结束值,t =介于0和1之间的值。例如,如果t = 0.5,则lerp返回例如v0和v1的平均值。对于这些其他缓动函数,我需要同样的行为。
或者如果修改这些缓动太难了,我能以某种方式修改现有的,工作的lerp函数,比如二次缓和吗?
答案 0 :(得分:1)
从您提供的第一页修改缓动功能。
将以下参数添加到所有函数定义中。
例如
var linear = function (t) {
return t
};
变为
var linear = function (t, start, end) {
return t
};
其中start
是时间t= 0
的值,而end
是t = 1;
的值
然后在每个函数中删除返回值并将其分配给t;
var linear = function (t, start, end) {
return t
};
变为
var linear = function (t, start, end) {
t = t;
// temp remove return
};
然后我们在Start
和end
之间翻新t的新词。这是通过将start
和end
之间的差异乘以t
(仍然在0-1范围内)来缩放范围,然后添加{{1}来实现的。它将相对于start的新值移动。
start
实施例
var linear = function (t, start, end) {
t = t;
t = (end - start) * t;
t += start;
return t;
};
// can be done in one line
var linear = function (t, start, end) {
return (end - start) * t + start;
};
// or
var easeOutQuart = function (t) {
return 1-(--t)*t*t*t
}
// becomes
var easeOutQuart = function (t, start, end) {
return (end - start) * (1-(--t)*t*t*t) + start ;
}