TweenMax的學習

TweenMax的介紹

  • 一般情況下我們使用jquery必須使用animate,然后后面接回調函數才能操作動畫。
  • 它最大的弊端就是操作不了時間。不方便。比如我就想要運動過程中在第三秒輸出一句話,他很難實現.
  • 所以這個時候TweenMax誕生了。他完美的解決了這個問題
  • TweenMax在使用的時候他必須要首先調用jquery 否則他實現不了

TweenMax使用介紹

  • 在使用之前無論如何都必須要創建一個對象,所有的方法都是圍繞這個對象進行
var move = new TimelineMax(); //創建對象
  • move.to(argument1,argument2,argument3,argument4)
  • to方法就是綁定動畫效果,他一共接受4個參數
  • 第一個參數: 元素名稱例如 "#nav"表示綁定的是id是nav的元素
  • 第二個參數: 動畫的時間 表示 執行一個動畫要多久
  • 第三個參數: 表示要改變的屬性。注意他只能是對象,并且值里面不加單位
    • 例如{"left":300,"width":200}
    • 這里要特別注意的就是onComplete:function(){}表示的是動畫完成后要執行的方法
    • onReverseComplete:function(){} //表示動畫反轉完成后要執行的方法
    • ease:Bounce.easeIn, //表示運動的形式。(了解就好)
    • 完整版本的:
    t.to("#div1",1,{ease:Bounce.easeIn,left:300,width:300,onComplete:function(){console.log("第一個動畫正序結束")},onReverseComplete:function(){console.log("第一個動畫倒序結束")}},1);
    
  • 第四個參數:表示的就是延遲時間 表示等待的時間
  • 動畫效果見下邊
動畫效果.gif

對應的代碼

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <title>TweenMax</title>
    <script src="js/jquery.min.js"></script>
    <script src="js/TweenMax.js"></script>
</head>
<style>
    *{margin:0px;padding:0px;}
    #div1{width:100px;height:100px;background:red;position:absolute;left:0px;top:0px;}
    input{margin-top:100px;}
</style>
<body>
<div id="div1"></div>

</body>
<script>
    $(function(){
        //首先第一步必須要new一個對象
        var t  = new TimelineMax();
       //t.stop();  //這樣一上來就阻止運行了。只有點擊播放按鈕才運行。他肯定封裝了exit()方法
        //利用to方法綁定動畫事件
        //4個參數 第一個參數 元素 ,第二個參數時間,第三個參數改變的屬性,必須是個對象,第四個動畫延遲的時間 : 除了第一個可以寫數組,剩下的要是想延遲就用"+=1" "-=1"必須加""
        //第三個參數里面還能封裝個方法:onComplete() 運動結束后觸發對應的函數
        //第三個參數里面封裝的方法:onReverseComplete();反向運動結束后觸發的函數
        //第三個參數里面還能用ease方法。獲取到運動的表現形式。(了解就好)
        t.to("#div1",1,{ease:Bounce.easeIn,left:300,width:300,onComplete:function(){console.log("第一個動畫正序結束")},onReverseComplete:function(){console.log("第一個動畫倒序結束")}},1);  //同時變化
        t.to("#div1",2,{left:500},"+=1");    //不加單位,自己變化
        t.to("#div1",2,{rotationX:180});  //旋轉這里封裝的是rotation,自己變化
        t.to("#div1",2,{opacity:0});  //還能修改濾鏡,自己變化
        t.to("#div1",2,{background:"blue"});
    })
</script>
</html>

to方法就到這了


播放與停止與反轉

  • move.play();表示動畫的播放
  • move.stop(); 表示動畫的停止,一上來用一次這樣動畫不會自己播放
  • move.reverse(); //表示動畫的反轉。意思就是從后向前執行
  • 效果圖如下:
運動效果1.gif
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <title>TweenMax</title>
    <script src="js/jquery.min.js"></script>
    <script src="js/TweenMax.js"></script>
</head>
<style>
    *{margin:0px;padding:0px;}
    #div1{width:100px;height:100px;background:red;position:absolute;left:0px;top:0px;}
    input{margin-top:100px;}
</style>
<body>
<div id="div1"></div>
<input type="button" value="播放" id="play">
<input type="button" value="停止" id="pause">
<input type="button" value="反向" id="reverse">
</body>
<script>
    $(function(){
        //首先第一步必須要new一個對象
        var t  = new TimelineMax();
         t.stop();  //這樣一上來就阻止運行了。只有點擊播放按鈕才運行。他肯定封裝了exit()方法
        //利用to方法綁定動畫事件
        //4個參數 第一個參數 元素 ,第二個參數時間,第三個參數改變的屬性,必須是個對象,第四個動畫延遲的時間 : 除了第一個可以寫數組,剩下的要是想延遲就用"+=1" "-=1"必須加""
        //第三個參數里面還能封裝個方法:onComplete() 運動結束后觸發對應的函數
        //第三個參數里面封裝的方法:onReverseComplete();反向運動結束后觸發的函數
        //第三個參數里面還能用ease方法。獲取到運動的表現形式。(了解就好)
        t.to("#div1",1,{ease:Bounce.easeIn,left:300,width:300,onComplete:function(){console.log("第一個動畫正序結束")},onReverseComplete:function(){console.log("第一個動畫倒序結束")}},1);  //同時變化
        t.to("#div1",2,{left:500},"+=1");    //不加單位,自己變化
        t.to("#div1",2,{rotationX:180});  //旋轉這里封裝的是rotation,自己變化
        t.to("#div1",2,{opacity:0});  //還能修改濾鏡,自己變化
        t.to("#div1",2,{background:"blue"});
        $("#play").click(function(){
            t.play(); //播放按鈕
        })
        $("#pause").click(function(){
            t.stop();   //暫停按鈕
        })
        $("#reverse").click(function(){
            t.reverse();  //反向動畫
        })
    })
</script>
</html>

插入狀態和狀態查詢

  • move.add(arguments1) //參數可以是字符串,也可以是要執行的函數。。不過一般都是字符串.
  • move.tweenTo(arguments1) //參數可以使字符串。也可以是時間
  • move.seek(argument1) //等價于 tweenTo,只不過沒有過渡了,直接切斷.
  • move.clear(); //清除所有的動畫
  • move.time(); //獲取到時間
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <title>TweenMax</title>
    <script src="js/jquery.min.js"></script>
    <script src="js/TweenMax.js"></script>
</head>
<style>
    *{margin:0px;padding:0px;}
    #div1{width:100px;height:100px;background:red;position:absolute;left:0px;top:0px;}

</style>
<body>
<div id="div1"></div>
</body>
<script>
    $(function(){
        var t = new TimelineMax();
        /*
          add 表示增加個狀態值。表示間隔的意思,參數可以是字符串也可以是函數主要還是狀態
          tweenTo 表示運動到指定的狀態值或者時間,后續不執行
          seek 作用和tewwnTo一樣但是他沒有過度效果,直接跳轉了最終了
          clear 清除所有動畫
         */
         t.stop();
         t.add("狀態一開始");
         t.to("#div1",1,{left:300});
         t.add(function(){
             $("#div1").css({"background":"blue"})
         });
         t.add("狀態二開始");
         t.to("#div1",2,{width:300});
         t.add("狀態三開始");
         t.to("#div1",3,{height:300});
         t.clear();
         t.tweenTo("狀態二開始");  //停止在間隔
         t.tweenTo(3);  //表示停止在3秒
         t.seek("狀態二開始");  //這個就表示沒有過度的效果,他會直接跳轉到狀態二的效果
    })
</script>
</html>

狀態查詢

  • move.getLabelTime(arguments1) //獲取到從開始到當前狀態的時間,參數就是一個狀態,返回值就是時間
  • move.getLabelBefore(arguments) //獲取上一個狀態,傳遞的是一個時間數字,返回值是狀態的字符串,如果沒有則返回下一個狀態返回null
  • move.getLabelAfter(arguments)//同上只不過獲取到的是下一個狀態
  • move.currentLabel():獲取當前狀態 返回值是狀態的字符串
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <title>TweenMax</title>
    <script src="js/jquery.min.js"></script>
    <script src="js/TweenMax.js"></script>
</head>
<style>
    *{margin:0px;padding:0px;}
    #div1{width:100px;height:100px;background:red;position:absolute;left:0px;top:0px;}

</style>
<body>
<div id="div1"></div>
</body>
<script>
    /*
      t.getLabelTime() 返回從開始到當前狀態的時間 能傳遞一個參數就是狀態的字符串。返回值是一個數字
      t.currentLabel():獲取當前狀態 返回值是狀態的字符串
      t.getLabelAfter():獲取下一個狀態傳遞的是一個時間數字,返回值是狀態的字符串,如果沒有則返回下一個狀態返回null
      t.getLabelBefore():同上
     */
    $(function(){
        var t = new TimelineMax();
        t.add("當前狀態一");
        t.to("#div1",1,{"width":300,onComplete:getCurrentTime},1);
        t.add("當前狀態二");
        t.to("#div1",2,{"left":300,onComplete:getCurrentTime},"+=1");
        t.add("當前狀態三");
        t.to("#div1",3,{"height":500,onComplete:getCurrentTime},"+=1");
        t.add("當前狀態四");
        t.to("#div1",3,{"background":"blue"});
        console.log(t.totalDuration());
        console.log(t.getLabelTime("當前狀態四"));
        console.log(t.currentLabel());
        function getCurrentLabel(){
            console.log(t.currentLabel());
        }
        function getCurrentTime(){
            var time = t.getLabelTime(t.currentLabel());
            console.log(t.getLabelBefore(time));
        }
    })
</script>
</html>

動畫的時間

  • move.time() //每一幀動畫的時間
  • move.totalDuration() //獲取動畫的時長
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <title>TweenMax</title>
    <script src="js/jquery.min.js"></script>
    <script src="js/TweenMax.js"></script>
</head>
<style>
    *{margin:0px;padding:0px;}
    #div1{width:100px;height:100px;background:red;position:absolute;left:0px;top:0px;}

</style>
<body>
<div id="div1"></div>
</body>
<script>
    $(function(){
        var t = new TimelineMax;
        /*
          t.time 表示動畫執行的時間
         t.totalDuration 表示獲取動畫總共的時間
         */
         t.stop();
         t.add("狀態一開始");
         t.to("#div1",1,{left:300});
         t.add(function(){
             $("#div1").css({"background":"blue"})
         });
         t.add("狀態二開始");
         t.to("#div1",2,{width:300});
         t.add("狀態三開始");
         t.to("#div1",3,{height:300});
         t.clear();
         t.tweenTo("狀態二開始");  //停止在間隔
         t.tweenTo(3);  //表示停止在3秒
         t.seek("狀態二開始");  //這個就表示沒有過度的效果,他會直接跳轉到狀態二的效果
        setInterval(function(){
            console.log(t.time())
        },16)
       console.log(t.totalDuration());
    })
</script>
</html>

以上就掌握到這里

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容

  • 《ilua》速成開發手冊3.0 官方用戶交流:iApp開發交流(1) 239547050iApp開發交流(2) 1...
    葉染柒丶閱讀 10,871評論 0 11
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,477評論 0 17
  • 《ijs》速成開發手冊3.0 官方用戶交流:iApp開發交流(1) 239547050iApp開發交流(2) 10...
    葉染柒丶閱讀 5,241評論 0 7
  • 最近越來越覺得父母變老了,今天跟我爸媽打電話當我問她幾點下班的,她說晚上十一點。我心里頓時震了一下,同時也感到自己...
    keepinger閱讀 141評論 0 0
  • 1 我對柳巖負責任是應該。 (多余的廢話)作品不慣人。 我好像曾經在覺悟之后又發現她萬般罄竹難書。 我只能認待那些最
    PrabhuAnother閱讀 221評論 0 0