以下のスライドアニメーションには慣性があります。スライドアニメーションは継続していて、時間の経過とともに速度が徐々に低下します。 interval
が100
に達すると、アニメーションが停止します。次のスライドアニメーションのスピードを上げる方法は?
let interval = 1 // initial speed
const timer = function() {
++interval // decrease the speed
slideThumbs(thumbs, direction) // do the sliding animation
const timeOut = setTimeout(timer, interval)
// stop animation when the speed reaches 100
if (interval === 100) {
clearTimeout(timeOut)
}
}
timer()
これは機能します。しかし、それは非常に遅いです。どうすれば全体のスピードを上げることができますか?
EDIT(初期アニメーションが停止したときにスライドから?):
これはslideThumbs
の内側に何である:
const totalThumbs = newChildrenArr.length
const thumbWidth = 144 // thumb width plus margin
const slideLimit = (totalThumbs - 1) * thumbWidth
if (arrow === 'left') {
store.state.translateX += 1 // add one pixel to the `transform: translateX` attribute
}
で言った何をしたいかのJSFiddleの一例です2、3、などのように、数値値を超えるすべてのミリ秒が発生するためです。 2回目の発射には2ミリ秒、3回目は5ミリ秒、4回目は8ミリ秒などとなります。あなたが0.5秒に達するまでに、あなたはそれを30回発射しました。これは大丈夫です、それは60FPSに近いです。今、次の半分の間、あなたはそれを13回しか発射しません。これは初期カウントの半分以下である。これは続く。 – Dellirium
代わりに、 'setInterval(function、interval)'を使って同じ間隔で関数を飛行させ、代わりに関数の実行ごとにオブジェクトの「移動距離」を減らすことをお勧めします。 – Dellirium
通常、Tweeningと 'easing'-functionについてはGoogleにお勧めしますが、今朝あなたの投稿に点滅がありました。私は別のアプローチが良くないとは思わない。この質問の文脈をより詳しく説明してください。 – Thomas