成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS—?jiǎng)赢嬀弰?dòng)—tween.js

wangxinarhat / 3088人閱讀

摘要:動(dòng)畫運(yùn)動(dòng)算法線性勻速運(yùn)動(dòng)效果二次方的緩動(dòng)三次方的緩動(dòng)四次方的緩動(dòng)五次方的緩動(dòng)正弦曲線的緩動(dòng)指數(shù)曲線的緩動(dòng)圓形曲線的緩動(dòng)指數(shù)衰減的正弦曲線緩動(dòng)超過范圍的三次方緩動(dòng)指數(shù)衰減的反彈緩動(dòng)。

requestAnimFrame兼容
window.requestAnimFrame = (function (callback,time) {
    return window.requestAnimationFrame ||
        window.webkitRequestAnimationFrame ||
        window.mozRequestAnimationFrame ||
        window.oRequestAnimationFrame ||
        window.msRequestAnimaitonFrame ||
        function (callback) {
            window.setTimeout(callback, time);
        };
})();
tween.js 參數(shù)
/*
 * t: current time(當(dāng)前時(shí)間,小于持續(xù)時(shí)間,tween返回當(dāng)前時(shí)間目標(biāo)的狀態(tài));
 * b: beginning value(初始值);
 * c: change in value(變化量);
 * d: duration(持續(xù)時(shí)間)。
*/
動(dòng)畫運(yùn)動(dòng)算法

Linear:線性勻速運(yùn)動(dòng)效果;

Quadratic:二次方的緩動(dòng)(t^2);

Cubic:三次方的緩動(dòng)(t^3);

Quartic:四次方的緩動(dòng)(t^4);

Quintic:五次方的緩動(dòng)(t^5);

Sinusoidal:正弦曲線的緩動(dòng)(sin(t));

Exponential:指數(shù)曲線的緩動(dòng)(2^t);

Circular:圓形曲線的緩動(dòng)(sqrt(1-t^2));

Elastic:指數(shù)衰減的正弦曲線緩動(dòng);

Back:超過范圍的三次方緩動(dòng)((s+1)t^3 – st^2);

Bounce:指數(shù)衰減的反彈緩動(dòng)。

每個(gè)效果都分三個(gè)緩動(dòng)方式,分別是:

easeIn:從0開始加速的緩動(dòng),也就是先慢后快;

easeOut:減速到0的緩動(dòng),也就是先快后慢;

easeInOut:前半段從0開始加速,后半段減速到0的緩動(dòng)。

Tween.js動(dòng)畫算法使用示意實(shí)例頁面

例子

1.

var t = 0, b = 0, c = 100, d = 10;
var step = function () {
    // value就是當(dāng)前的位置值
    // 例如我們可以設(shè)置DOM.style.left = value + "px"實(shí)現(xiàn)定位
    var value = Tween.Linear(t, b, c, d);
    t++;
    if (t <= d) {
         // 繼續(xù)運(yùn)動(dòng)
         requestAnimationFrame(step);
    } else {
        // 動(dòng)畫結(jié)束
    }
};

2.返回頂部/setInterval

backTop(){
        var Tween = {
          Linear: function(t, b, c, d) { //勻速運(yùn)動(dòng)
            return c * t / d + b; 
          }
        }
        Math.tween = Tween;
        var t = 0;
        const b = document.documentElement.scrollTop;
        const c = 100;
        const d = 5;
        const setInt = setInterval(()=>{
          t--;
          //console.log(t)
          if(document.documentElement.scrollTop == 0){clearInterval(setInt)}
          //console.log(t);
          const backTop = Tween.Linear(t,b,c,d);
          //console.log(backTop);
          document.documentElement.scrollTop = backTop;
        },5)
},


學(xué)趣樂園,backLeft

Tweenjs 安裝
npm install @tweenjs/tween.js
例子
var box = document.createElement("div");
box.style.setProperty("background-color", "#008800");
box.style.setProperty("width", "100px");
box.style.setProperty("height", "100px");
document.body.appendChild(box);
 
// 動(dòng)畫循環(huán)
function animate(time) {
    requestAnimationFrame(animate);
    TWEEN.update(time);
}
requestAnimationFrame(animate);
 
var coords = { x: 0, y: 0 }; // 開始位置
var tween = new TWEEN.Tween(coords) // 創(chuàng)建一個(gè)更改目標(biāo)的tween

.to({ x: 300, y: 200 }, 1000) // 目的位置,1s
.easing(TWEEN.Easing.Quadratic.Out) // 平滑動(dòng)畫
.onUpdate(function() { // 目標(biāo)更新后調(diào)用
    // CSS translation
    box.style.setProperty("transform", "translate(" + coords.x + "px, " + coords.y + "px)");
})
.start(); 

Tween.js各類原生動(dòng)畫運(yùn)動(dòng)緩動(dòng)算法
Projects using tween.js

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108170.html

相關(guān)文章

  • tween.js緩動(dòng)(補(bǔ)間動(dòng)畫

    摘要:首先引入一個(gè)概念就補(bǔ)間動(dòng)畫做動(dòng)畫時(shí)會(huì)用到類,利用它可以做很多動(dòng)畫效果,例如緩動(dòng)彈簧等等。代表的就是最后一幀減去初始值就是變化量,代表最后一幀的結(jié)束也是動(dòng)畫的結(jié)束。 一、理解tween.js 如果看到上面的已經(jīng)理解了,可以跳過下面的部分.下面為對(duì)Tween.js的解釋 下面就介紹如何使用這個(gè)Tween了,首先b、c、d三個(gè)參數(shù)(即初始值,變化量,持續(xù)時(shí)間)在緩動(dòng)開始前,是需要先確定好的。...

    chengjianhua 評(píng)論0 收藏0
  • JS進(jìn)階篇--window.requestAnimationFrame與Tween.js配合使用實(shí)現(xiàn)

    摘要:注意如果想得到連貫的逐幀動(dòng)畫,函數(shù)中必須重新調(diào)用。如果你想做逐幀動(dòng)畫的時(shí)候,你應(yīng)該用這個(gè)方法。這個(gè)回調(diào)函數(shù)會(huì)收到一個(gè)參數(shù),這個(gè)類型的參數(shù)指示當(dāng)前時(shí)間距離開始觸發(fā)的回調(diào)的時(shí)間。 window.requestAnimationFrame 概述 window.requestAnimationFrame()這個(gè)方法是用來在頁面重繪之前,通知瀏覽器調(diào)用一個(gè)指定的函數(shù),以滿足開發(fā)者操作動(dòng)畫的需求。...

    Ilikewhite 評(píng)論0 收藏0
  • JS進(jìn)階篇--window.requestAnimationFrame與Tween.js配合使用實(shí)現(xiàn)

    摘要:注意如果想得到連貫的逐幀動(dòng)畫,函數(shù)中必須重新調(diào)用。如果你想做逐幀動(dòng)畫的時(shí)候,你應(yīng)該用這個(gè)方法。這個(gè)回調(diào)函數(shù)會(huì)收到一個(gè)參數(shù),這個(gè)類型的參數(shù)指示當(dāng)前時(shí)間距離開始觸發(fā)的回調(diào)的時(shí)間。 window.requestAnimationFrame 概述 window.requestAnimationFrame()這個(gè)方法是用來在頁面重繪之前,通知瀏覽器調(diào)用一個(gè)指定的函數(shù),以滿足開發(fā)者操作動(dòng)畫的需求。...

    codergarden 評(píng)論0 收藏0
  • JS進(jìn)階篇--window.requestAnimationFrame與Tween.js配合使用實(shí)現(xiàn)

    摘要:注意如果想得到連貫的逐幀動(dòng)畫,函數(shù)中必須重新調(diào)用。如果你想做逐幀動(dòng)畫的時(shí)候,你應(yīng)該用這個(gè)方法。這個(gè)回調(diào)函數(shù)會(huì)收到一個(gè)參數(shù),這個(gè)類型的參數(shù)指示當(dāng)前時(shí)間距離開始觸發(fā)的回調(diào)的時(shí)間。 window.requestAnimationFrame 概述 window.requestAnimationFrame()這個(gè)方法是用來在頁面重繪之前,通知瀏覽器調(diào)用一個(gè)指定的函數(shù),以滿足開發(fā)者操作動(dòng)畫的需求。...

    zorpan 評(píng)論0 收藏0
  • JS進(jìn)階篇--window.requestAnimationFrame與Tween.js配合使用實(shí)現(xiàn)

    摘要:注意如果想得到連貫的逐幀動(dòng)畫,函數(shù)中必須重新調(diào)用。如果你想做逐幀動(dòng)畫的時(shí)候,你應(yīng)該用這個(gè)方法。這個(gè)回調(diào)函數(shù)會(huì)收到一個(gè)參數(shù),這個(gè)類型的參數(shù)指示當(dāng)前時(shí)間距離開始觸發(fā)的回調(diào)的時(shí)間。 window.requestAnimationFrame 概述 window.requestAnimationFrame()這個(gè)方法是用來在頁面重繪之前,通知瀏覽器調(diào)用一個(gè)指定的函數(shù),以滿足開發(fā)者操作動(dòng)畫的需求。...

    Riddler 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<