Mark Ku's Blog

透過 Adobe After Effect 製作 lottie 動畫,並與 Javascript 互動 Part 1 - 動態替換文字

前言

公司想製作猴子上樹的小遊戲,起因是原本專案有用到 Lottie 動畫,覺得動畫流暢度及體驗感很好,就深入研究了一下,如何用 Adobe After Effect 製作 Lottie 小遊戲動畫,並與 Vue 前端框架做互動。

前置準備

  1. 安裝 Adobe After Effeect
  2. 安裝 Bodymovin 插件 ( for 匯出 lottie的 json )
  3. 開啟『允許腳本及網路存取』 After Effects介面,選取編輯偏好設定一般 勾選 Allow Script to write file and network access After Effects 偏好設定勾選腳本網路存取

讓我們開始開發吧

首先,我們得匯入 Lottie 素材,至 Adobe After Effec

我們可以透過 lottiefiles.com 下載免費的lottie 動畫 json 檔。

LottieFiles網站猴子動畫URL下載介面
LottieFiles網站猴子動畫URL下載介面

回到 Adobe After effect ,點選 Window > Extensions > Bodymovin Adobe After Effects 介面,選單

點選 Import Lottie Anmimation > Bodymovin外掛介面紅框標示Import Lottie Animation按鈕

匯入剛剛的下載的lottie 的動畫 json 檔 Bodymovin 介面匯入 Lottie 動畫 JSON 檔的

匯入成功的畫面
After Effects Bodymovin匯入Lottie JSON檔成功 匯入的動畫會顯示在素材庫裡
After Effects 專案面板顯示匯入的猴子動畫

埋入文字圖層 (Text Layer) 給 Javascript 控制

點選輸入 horizontal type tool > 輸入文字 > "test" After Effects 工具列中選取水平文字工具T圖示

對 text layer > 右鍵 > rename

After Effects 介面中對文字圖層右鍵選取重新命名
After Effects 介面中對文字圖層右鍵選取重新命名

但這邊要非常注意,因為後面要透過 Javascript 控制,因此要透過 "#" 當特殊後缀命名,#字之後字元會轉換成 id。 emample: test#rate

After Effects 介面顯示文字圖層命名為
After Effects 介面顯示文字圖層命名為

最後輸出在網頁的時候,會將 id 挷在所屬的 DOM 上

SVG程式碼中id為rate的群組標籤
SVG程式碼中id為rate的群組標籤

匯出 lottie json 動畫檔

開啟Bodymovin, Window > Extensions > Bodymovin ,並依據下圖操作 Bodymovin匯出Lottie動畫介面,標示路徑、設定與Render按鈕

★★★★★要特別注意 ★★★★★
在輸出成 Lottie 動畫檔,一定要勾選掉 Glyphs ,移掉原有的字型,不然會一直匯出錯誤( Character could not be created ),也不會將文字輸出成 html。 Bodymovin設定介面中的Glyphs選項

我們預期透過 Javascript ,動態去替換掉 Lottie 動畫裡先前指定 id 的文字圖層,這邊以vue 程式碼為例:

撰寫 Example.vue 
<template>
  <div>
    <div class="flex">
      <div ref="monkey" />
    </div>
  </div>
</template>
<script>

import loApi from 'lottie-api'
import lottie from 'lottie-web'
import { numberFormat } from '@/utils'

export default {
  components: {

  },
  data() {
    return {
      lottieAnimation: null
    }
  },
  created() {

  },
  mounted() {
    this.lottieAnimation = this.loadLottieAnimation()
    let count = 1
    const that = this

    // 每兩秒去修改 rate 裡面的值
    setInterval(() => {
      count = count + 0.01
      var api = loApi.createAnimationApi(that.lottieAnimation)
      var elements = api.getKeyPath('test#rate').getElements() // 查找對象
      var ele = elements[0]
      const result = '' + numberFormat(count, 2) // 修改改傳入的值必須是字元串不能是數字,否則會失敗
      ele.setText(result)
    }, 2000)
  },
  methods: {
    loadLottieAnimation() {
      return lottie.loadAnimation({
        container: this.$refs.monkey, // 掛在到對應的 DOM 節點
        loop: true,
        animationData: require('@/assets/lottie/monkey.json'),
        autoplay: true
      })
    }
  }
}
</script>

完成結果

Lottie猴子動畫與動態替換的3.99文字
Lottie猴子動畫與動態替換的3.99文字

Demo 影片連結

結論

Adobe After Effect 本身可透過 Lottie Api 達到前端和動畫做互動,對於撰寫小遊戲真的相當的方便,提供相當多事件及屬性可以調整,像是速度、播放次數、重覆播放,播放完成執行事件等等。

下一章 - 透過 Adobe After Effect 製作 lottie 動畫,並與 Javascript 互動 Part 2 - 進階互動應用

作者

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··597

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··469

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··327

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··239

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··233

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··220

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取