このjQueryイージング関数を変更して、誇張されていないバウンスを生成するにはどうすればよいですか?
$.easing.easeOutElasticSingleBounce = function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
};
これをエミュレートするイージング関数を作成しようとしています。
http://sandbox.scriptiny.com/tinyslider2/
tinyslider2は、次のような同様の関数を使用します。
new Function(this.n+'.slide('+(i==1?t+(12*d):t+(4*d))+','+(i==1?(-1*d):(-1*d))+','+(i==1?2:3)+','+a+')')
しかし、tinyslider2の方程式をjQueryのイージング形式に適合させるために、今日の数学に頭を悩ませているようには思えません。誰かが私に例を示すことができれば、私はそれをとても感謝します。
アップデート
この方程式は非常に近いです:
$.easing.custom = function (x, t, b, c, d) {
var s = 1.70158;
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
}
最初のバウンスなしで、最後のバウンスだけが必要です。