我需要一个非常典型的jquery缓动函数。它基本上与传统的easeInOut缓动相反,因为我希望这个过程从快速介绍到较慢的中间部分再到快速的outro(你可以称之为speedInOut)。
不幸的是,我的数学有点生疏,我需要有人指出我如何开始的正确方向。
双曲线窦曲线(sinh)在我正在寻找的方向上有所偏差,但我需要它在两个轴上限制在0和1之间。
这是我正在使用的jquery缓动函数框架
$.easing.speedInOut = function(t, millisecondsSince, startValue, endValue, totalDuration) {
if(t = 0) return startValue;
if(t = 1) return startValue + endValue;
// custom function should go here
};
非常感谢任何帮助!
答案 0 :(得分:4)
我在前面提到的,聪明的同事的帮助下想出了事情(实际上是他做了所有繁重的工作)。
我最终使用的最终数学公式是: (sinh((x - 0.5)* 5)+ sinh( - (x - 0.5))+(sinh(2.5)+ sin(-2.5)))/(sinh(2.5)* 1.82)
我还需要在javascript中实现sinh,因为它不是数学对象的一部分,但这很容易:
function sinh(aValue) {
var myTerm1 = Math.pow(Math.E, aValue);
var myTerm2 = Math.pow(Math.E, -aValue);
return (myTerm1-myTerm2)/2;
}
缓动功能本身如下:
$.easing.speedInOut = function(x, t, b, c, d) {
return (sinh((x - 0.5) * 5) + sinh(-(x - 0.5)) + (sinh(2.5) + Math.sin(-2.5))) / (sinh(2.5) * 1.82);
};