指定時(shí)間內(nèi)的勻速運(yùn)動(dòng)

第一種思想
實(shí)現(xiàn)一個(gè)勻速運(yùn)動(dòng),在指定時(shí)間內(nèi)完成動(dòng)畫: 計(jì)算出總距離/總時(shí)間,根據(jù)總距離和總時(shí)間求出對(duì)應(yīng)的步長(每10ms走一步的話走多遠(yuǎn))。

    var maxLeft = utils.win('clientWidth') - oBox.offsetWidth;
    var duration = 2000;
    var interval = 10;
    var step = (maxLeft / duration) * interval;

    var timer = window.setInterval(function () {
        var curLeft = utils.css(oBox, 'left');
        curLeft += step;
        utils.css(oBox, 'left', curLeft);

        if (curLeft >= maxLeft) {
            clearInterval(timer);
            return;
        }
    }, interval);

第二種思想:
實(shí)現(xiàn)一個(gè)勻速運(yùn)動(dòng): 在制定時(shí)間內(nèi)完成動(dòng)畫 -> 自己寫一個(gè)動(dòng)畫公式,根據(jù)當(dāng)前走的時(shí)間t、總時(shí)間d、起始位置b、總距離c,計(jì)算出當(dāng)前元素應(yīng)該在的位置,讓當(dāng)前的元素運(yùn)動(dòng)到這個(gè)位置即可。

    function Linear(t, b, c, d) {
        return c * t / d + b;
    }

    var oBox = document.getElementById('box');
    var target = utils.win('clientWidth') - oBox.offsetWidth,
        begin = utils.css(oBox, 'left'),
        change = target - begin; // 總距離
    var duration = 2000;
    var time = 0;

    // (time / duration) * change + begin; // 走了多遠(yuǎn)+開始位置=當(dāng)前位置
    var timer = window.setInterval(function () {
         time += 10;

         if (time >= duration) {
             utils.css(oBox, 'left', target);
             clearInterval(timer);
             return;
         }

         var curPosition = Linear(time, begin, change, duration);
         utils.css(oBox, 'left', curPosition);
    }, 10);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 背景 不能只分析源碼呀,分析的同時(shí)也要整理歸納基礎(chǔ)知識(shí),剛好有人微博私信讓全面說說Android的動(dòng)畫,所以今...
    未聞椛洺閱讀 2,844評(píng)論 0 10
  • 轉(zhuǎn)載一篇高質(zhì)量博文,原地址請(qǐng)戳這里轉(zhuǎn)載下來方便今后查看。1 背景不能只分析源碼呀,分析的同時(shí)也要整理歸納基礎(chǔ)知識(shí),...
    Elder閱讀 2,006評(píng)論 0 24
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,690評(píng)論 6 30
  • [TOC] Property Animation 屬性動(dòng)畫系統(tǒng)是一個(gè)強(qiáng)大的框架,幾乎可以將任何東西動(dòng)畫化。您可以定...
    獨(dú)倚欄桿閱讀 779評(píng)論 2 1
  • 緣分不在 就隨風(fēng)去遠(yuǎn)航 行程有風(fēng) 有浪 任她去闖 別說抱歉 我們本來就互不相欠 天邊的彩虹 也不過片刻的壯觀 走就...
    笨妞簡(jiǎn)閱讀 504評(píng)論 0 0

友情鏈接更多精彩內(nèi)容