Lottie 是一個適用於網頁和 iOS 的行動裝置函式庫,它可以解析使用 Bodymovin 匯出為 JSON 的 Adobe After Effects 動畫,並在行動裝置上以原生方式渲染!
設計師首次能夠建立並發佈精美的動畫,而無需工程師費力地手動重新建立。俗話說一圖勝千言,以下有 13,000 個字。
從 aescripts + aeplugins 下載: http://aescripts.com/bodymovin/
或從 Adobe 商店取得: https://creative.adobe.com/addons/products/12557 CC 2014 及更新版本。
關閉 After Effects
將壓縮檔案從 build/extension/bodymovin.zxp
解壓縮至 Adobe CEP 資料夾
WINDOWS
C:\Program Files (x86)\Common Files\Adobe\CEP\extensions 或
C:\<使用者名稱>\AppData\Roaming\Adobe\CEP\extensions
MAC
/Library/Application\ Support/Adobe/CEP/extensions/bodymovin
(您可以開啟終端機並輸入
$ cp -R YOURUNZIPEDFOLDERPATH/extension /Library/Application\ Support/Adobe/CEP/extensions/bodymovin
然後輸入
$ ls /Library/Application\ Support/Adobe/CEP/extensions/bodymovin
以確保已正確複製)
編輯登錄機碼
WINDOWS
開啟登錄機碼 HKEY_CURRENT_USER/Software/Adobe/CSXS.6
並新增一個名為 PlayerDebugMode
的機碼,類型為字串,值為 1
。
MAC
開啟檔案 ~/Library/Preferences/com.adobe.CSXS.6.plist
並新增一個索引鍵為 PlayerDebugMode
的列,類型為字串,值為 1
。
依照此處的指示手動安裝 zxp:https://helpx.adobe.com/x-productkb/global/installingextensionsandaddons.html 直接跳至「安裝第三方擴充功能」
brew tap danielbayley/adobe
brew cask install lottie
# with npm
npm install lottie-web
# with bower
bower install bodymovin
或者您可以使用此處的腳本檔案:https://cdnjs.com/libraries/bodymovin 或直接從 AE 外掛程式按一下「取得播放器」取得
這有一個影片教學,說明如何匯出基本動畫並將其載入 HTML 頁面
在您的 HTML 中包含 .js 檔案(請記得針對生產環境將其壓縮)
<script src="js/lottie.js" type="text/javascript"></script>
您可以呼叫 lottie.loadAnimation() 以啟動動畫。它會接收一個物件作為唯一參數,其中包含
它會傳回動畫實例,您可以透過 play、pause、setSpeed 等控制它。
lottie.loadAnimation({
container: element, // the dom element that will contain the animation
renderer: 'svg',
loop: true,
autoplay: true,
path: 'data.json' // the path to the animation json
});
請查看此 Wiki 頁面,以了解每個設定的說明。https://github.com/airbnb/lottie-web/wiki/Composition-Settings
動畫實例具有以下主要方法
href
:通常作為 location.href
傳遞。當您在 Safari 中遇到遮罩問題時,如果您的 URL 沒有 #
符號,這會很有用。speed
:1 是正常速度。value
:數值。isFrame
:定義第一個引數是基於時間的值還是基於框架的值(預設為 false)。value
:數值。isFrame
:定義第一個引數是基於時間的值還是基於框架的值(預設為 false)。direction
:1 是向前,-1 是反向。segments
:陣列。可以包含 2 個數值,將用作動畫的第一個和最後一個影格。或者可以包含一系列陣列,每個陣列都包含 2 個數值。forceFlag
:布林值。如果設為 false,將會等到目前的片段完成。如果為 true,將立即更新值。
useSubFrames
:如果為 false,將會遵循原始 AE fps。如果為 true,將會在每個 requestAnimationFrame 中使用中間值更新。預設值為 true。
inFrames
:如果為 true,以影格為單位傳回持續時間,如果為 false,則以秒為單位傳回。
updateTextDocumentData -- 更新文字圖層的資料 更多資訊
lottie.play() -- 具有 1 個可選參數 name,以指定特定動畫
lottie.stop() -- 具有 1 個可選參數 name,以指定特定動畫
lottie.setSpeed() -- 第一個引數是速度(1 是正常速度)-- 具有 1 個可選參數 name,以指定特定動畫
lottie.setDirection() -- 第一個引數是方向(1 是正常方向)-- 具有 1 個可選參數 name,以指定特定動畫
lottie.searchAnimations() -- 尋找具有類別 "lottie" 或 "bodymovin" 的元素
lottie.loadAnimation() -- 如上所述。傳回動畫實例以個別控制。
lottie.destroy() -- 銷毀並釋放資源。DOM 元素將會清空。
lottie.registerAnimation() -- 您可以使用 registerAnimation 直接註冊元素。它必須具有 "data-animation-path" 屬性,指向 data.json URL
lottie.setQuality() -- 預設為 'high',設定為 'high'、'medium'、'low' 或數字 > 1,以改善播放器效能。在某些動畫中,即使低至 2 也可能看不出任何差異。
您也可以使用 addEventListener 和以下事件
如果您想要使用現有的畫布進行繪製,您可以傳遞一個額外物件:「rendererSettings」,其中包含下列設定
lottie.loadAnimation({
container: element, // the dom element
renderer: 'svg',
loop: true,
autoplay: true,
animationData: animationData, // the animation data
rendererSettings: {
context: canvasContext, // the canvas context
scaleMode: 'noScale',
clearCanvas: false,
progressiveLoad: false, // Boolean, only svg renderer, loads dom elements when needed. Might speed up initialization for large number of elements.
hideOnTransparent: true, //Boolean, only svg renderer, hides elements when opacity reaches 0 (defaults to true)
className: 'some-css-class-name'
}
});
這樣做,您將必須處理每個影格後清除畫布的問題
載入動畫的另一種方法是將特定屬性新增至 DOM 元素。您必須包含一個 div,並將其類別設定為「lottie」。如果您在頁面載入之前執行此動作,它將會自動搜尋具有類別「lottie」的所有標籤。或者,您可以在頁面載入後呼叫 lottie.searchAnimations()
,它將會搜尋具有類別「lottie」的所有元素。
必要條件
選用條件
範例
<div style="width:1067px;height:600px" class="lottie" data-animation-path="animation/" data-anim-loop="true" data-name="ninja"></div>
您可以預覽或擷取動畫的 SVG 快照以用作海報。在您渲染動畫後,您可以擷取動畫中任何影格的快照,並將其儲存至您的磁碟。我建議將 SVG 傳遞到類似 https://jakearchibald.github.io/svgomg/ 的 SVG 優化工具,並調整其設定。
如果您有任何尚未轉換為形狀的影像或 AI 圖層(我建議您轉換它們,以便將它們匯出為向量,請在每個圖層上按一下右鍵,然後執行:「從向量圖層建立形狀」),它們將會儲存至目標 JSON 資料夾的相對影像資料夾。請注意不要覆寫位於相同位置的現有資料夾。
這是即時渲染。雖然經過相當好的優化,但如果將 AE 專案保持在必要範圍內,總會有所幫助
更多優化正在進行中,但盡量不要在 AE 中使用巨大的形狀來遮蔽一小部分。
過多的節點也會影響效能。
如果您有任何無法運作的動畫,或是希望我匯出它們,請隨時來信。
我對了解外掛程式有哪些問題真的很有興趣。
我的電子郵件是 hernantorrisi@gmail.com
先 npm install
或 bower install
,然後執行 npm start