新聞中心
我們知道,做動(dòng)畫有多種形式,可以用CSS的animation,也可以用Canvas,或者是用JS控制CSS的屬性形成動(dòng)畫。我們經(jīng)常使用CSS做一些比較簡單的動(dòng)畫,像過度、加載的動(dòng)畫,對(duì)于一些比較復(fù)雜的,可能會(huì)做成gif,或者是用Canvas,使用Canvas的控制粒度可以很細(xì),同時(shí)工作量相對(duì)也比較大。做動(dòng)畫還有其它的方式,那就是使用After Effect(AE)/Flash/Premiere(Pr)/會(huì)聲會(huì)影等視頻軟件,這種可視化的制作方式相對(duì)于直接寫代碼來說,會(huì)更容易簡單自然。做動(dòng)畫本身應(yīng)該使用工具進(jìn)行制作,但是這種視頻軟件做出來的動(dòng)畫最后都是生成視頻文件,并且通常體積還很大,沒有辦法直接移植到網(wǎng)頁上去。

然而好消息是,現(xiàn)在我們可以使用AE做動(dòng)畫,然后使用bodymovin插件導(dǎo)出成html文件進(jìn)行播放。AE是Adobe推出的一個(gè)很出名的視頻后期處理軟件,有些電影就是用AE做的,如變形金剛,還有人把AE當(dāng)成加強(qiáng)版PS使用。也就是說假如我們可以AE做出一些電影級(jí)別的效果,然后用html播放,那是一件多么酷炫的事情。
1. 安裝bodymovin
bodymovin是一個(gè)AE的一個(gè)開源的第三方擴(kuò)展,github地址。上面可以下載這個(gè)插件。然后再安裝一個(gè)ZXPInstaller來安裝這個(gè)文件,然后重啟AE就可以了,當(dāng)然前提是你要安裝一個(gè)AE。它支持AE CC版本:
- After EffectsCC 2017, CC 2015.3, CC 2015, CC 2014
安裝完之后,點(diǎn)擊AE的菜單Window -> Extensions -> Bodymovin就會(huì)彈出一個(gè)窗口:
2. 使用AE制作動(dòng)畫
我相信很多人都沒有玩過AE,所以這里我簡單地介紹一下。首先新建一個(gè)工程(project),然后新建一個(gè)合成(composition),選擇1080p/29fps,時(shí)長為10s,它就會(huì)創(chuàng)建一個(gè)10s的合成。如下時(shí)間軸面板的顯示:
這個(gè)時(shí)間軸將會(huì)是頻繁操作的地方。點(diǎn)擊文字工具,在上方的預(yù)覽窗口選中一個(gè)位置點(diǎn)擊創(chuàng)建文字,然后把它拖到窗口外面,因?yàn)槲覀儨?zhǔn)備做一個(gè)文字從外面進(jìn)來的動(dòng)畫,所以剛開始它是在外面的。把上圖右邊的藍(lán)色豎線表示的時(shí)間線拖到0s的位置,然后在左邊的文字圖層的Position屬性打一個(gè)關(guān)鍵幀,如下圖所示:
然后把時(shí)間線挪到3s的位置,改變文字的Position,把它挪到窗口的中間,這個(gè)時(shí)候AE會(huì)自動(dòng)在時(shí)間線的位置打一個(gè)關(guān)鍵幀,如下圖所示:
然后按一下空格鍵進(jìn)行預(yù)覽,預(yù)覽窗口就會(huì)播放起了我們剛剛設(shè)定的動(dòng)畫:
你會(huì)發(fā)現(xiàn),這個(gè)過程不是和CSS的keyframe動(dòng)畫一樣的么?沒錯(cuò)!動(dòng)畫的原理都是一樣,通過設(shè)定關(guān)鍵幀制作動(dòng)畫?,F(xiàn)在來比較一下用AE和用CSS/Canvas做這個(gè)動(dòng)畫的區(qū)別。
3. 關(guān)鍵幀動(dòng)畫
現(xiàn)在用CSS做這個(gè)動(dòng)畫,如下代碼所示:
- .text{
- animation: move 3s linear infinite;
- }
- @keyframes move{
- from{
- transform: translateX(-320px);
- }
- to{
- transform: translateX(100px);
- }
- }
Hello, frontend
我們給animation添加一個(gè)動(dòng)畫,這個(gè)動(dòng)畫有兩個(gè)關(guān)鍵幀,分別在0%和100%的位置,需要變化的是transform的屬性。這段代碼在瀏覽器運(yùn)行,就會(huì)有剛剛用AE做的動(dòng)畫的效果了。如果用Canvas呢,應(yīng)該怎么實(shí)現(xiàn)呢?
如下代碼所示:


咨詢
建站咨詢