jQuery の制御下に横スクロール Web サイトがあり、水平方向に数千ピクセル離れたページがいくつかあります。私は easeOutElastic 関数を使用していますが、アニメーションが高速になり、弾性バウンスを弱める必要があります。デュレーション パラメータを大きくすると、アニメーションが遅くなりますが、バウンスも遅くなります。デュレーションがアニメーション全体を制御しているようです。
私がする必要があるのは、移動の速度と弾性のきつさを別々に制御することです. 私はプラグインでそのeasyOutElastic関数の独自のコピーをいじっていましたが、すべてのパラメーターが何であるかがわからないため、正しく理解できないようです:
easeOutElastic: 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;
}
パラメータ x、t、b、c、d が何を表しているか教えてもらえますか?
私は仮定します(関数をトレースします):
t = time // passed from the duration
d = distance // calculated from the current and move to positions passed from the css
t == 0 のときにイージング関数が終了したように見えますが、実際に必要なのは、時間が経過するのを待つのではなく、モーションの速度があるしきい値を下回ったときに関数が戻ることです。しかし、速度はどこで計算されるのでしょうか? (?)
これを解読するためにあなたが与えることができるどんな助けも素晴らしいでしょう!