Lottie-前端實現AE動效
阿新 • • 發佈:2021-01-22
Lottie是可應用於Android
,iOS
, Web
和Windows
的庫,通過Bodymovin
解析AE動畫,並匯出可在移動端和web端渲染動畫的json檔案。換言之,設計師用AE把動畫效果做出來,再用Bodymovin匯出相應地json檔案給到前端,前端使用Lottie庫就可以實現動畫效果。
前端使用lottie
npm install lottie-web
import lottie from "lottie-web"; import animationData from "./assets/data.json"; const animation = lottie.loadAnimation({ container: document.getElementById("svgContainer"), // 要包含該動畫的dom元素 animationData: animationData, // 動畫json檔案路徑 loop: true, // 是否迴圈播放 renderer: "svg", // 渲染方式,svg、canvas、html(輕量版僅svg渲染) autoplay: true, // 是否自動播放 });
loadAnimation引數
名稱 | 描述 |
---|---|
container | 用於渲染動畫的HTML元素,需確保在呼叫loadAnimation時該元素已存在 |
renderer | 渲染器,可選值為’svg’(預設值)/‘canvas’/‘html’。svg支援的功能最多,但html的效能更好且支援3d圖層。 |
loop | 預設值為true。可傳遞需要迴圈的特定次數 |
autoplay | 自動播放 |
path | JSON檔案路徑 |
animationData | JSON資料,與path互斥 |
name | 傳遞該引數後,可在之後通過lottie引用該動畫例項 |
rendererSettings | 可傳遞給renderer例項的特定設定,具體可看 |
方法
名稱 | 引數 | 描述 |
---|---|---|
stop | 無 | 停止動畫 |
play | 無 | 播放動畫 |
pause | 無 | 暫停 |
setSpeed | Number | 設定播放速度,1 表示1倍速度,0.5 表示 0.5倍速度 |
setDirection | Number | 正反向播放,1 表示 正向,-1 表示反向 |
goToAndStop | Number, [Boolean] | 跳到某一幀或某一秒停止,第二個引數 iFrame 為是否基於幀模式還是時間,預設為 false |
goToAndPlay | Number, [Boolean] | 跳到某一幀或某一秒開始,第二個引數 iFrame 為是否基於幀模式還是時間,預設為 false |
playSegments | Array, [Boolean] | 播放片段,引數1為陣列,兩個元素為開始幀和結束幀;引數2為,是否立即播放片段,還是等之前的動畫播放完成 |
destroy | 無 | 銷燬 |
Lottie動畫監聽
// 動畫播放完成觸發
animation.addEventListener("complete", () => {});
// 當前迴圈播放完成觸發
animation.addEventListener("loopComplete", () => {});
// 播放一幀動畫的時候觸發
animation.addEventListener("enterFrame", () => {});
- complete
- loopComplete
- enterFrame
- segmentStart
- config_ready(初始配置完成)
- data_ready(所有動畫資料載入完成)
- DOMLoaded(元素已新增到DOM節點)
- destroy