1. 程式人生 > 其它 >Lottie-前端實現AE動效

Lottie-前端實現AE動效

技術標籤:筆記前端

Lottie是可應用於Android,iOS, WebWindows的庫,通過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自動播放
pathJSON檔案路徑
animationDataJSON資料,與path互斥
name傳遞該引數後,可在之後通過lottie引用該動畫例項
rendererSettings可傳遞給renderer例項的特定設定,具體可看

方法

名稱引數描述
stop停止動畫
play播放動畫
pause暫停
setSpeedNumber設定播放速度,1 表示1倍速度,0.5 表示 0.5倍速度
setDirectionNumber正反向播放,1 表示 正向,-1 表示反向
goToAndStopNumber, [Boolean]跳到某一幀或某一秒停止,第二個引數 iFrame 為是否基於幀模式還是時間,預設為 false
goToAndPlayNumber, [Boolean]跳到某一幀或某一秒開始,第二個引數 iFrame 為是否基於幀模式還是時間,預設為 false
playSegmentsArray, [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