android 加载ae动画,Bodymovin:Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画...

前段时间听部门老大说,Airbnb出了个移动端的动画库Lottie,可以和一个名叫Bodymovin的AE插件结合起来,把在AE上做好的动画导出为json文件,然后以Android/iOS原生动画的形式在移动设备上渲染播放。AE(Adobe After Effects)可是视频后期特效和动画制作的行家,前段时间充斥视野的MG动画都是用它制作的。如果真的可以实现,就会大大方便前端动画的设计。

后来到4月8日,我参加了第二届中国前端开发者大会(FDCon2017),作为菜鸟瞻仰了下各位大牛。巧的是,来自阿里的大牛渚薰做主题演讲时,也提到了Lottie和Bodymovin。渚薰的主题是“H5互动的正确打开方式”,演讲十分精彩。还等什么,听完大会我便操练了起来。

5cae0c2331d4cb60cdba0385173bb63d.png

(上图为FDCon2017上渚薰讲到Lottie时的PPT页面)

经过了一番试验后,我大概摸清了Bodymovin的使用方式。这个AE插件可以把AE上做好的合成(Composition,类似于Pr里的剪辑序列)导出成带有矢量动画信息的json文件,并可以在以下平台播放:

Web页面,以svg/canvas/html+js的形式。Bodymovin自己提供了作为Player的js库——bodymovin.js;

Android原生,通过Airbnb的开源项目“lottie-android”实现;

iOS原生,通过Airbnb的开源项目“lottie-ios”实现;

React Native,通过Airbnb的开源项目“lottie-react-native”实现。

下面就分步骤总结下Bodymovin的安装和使用,以及导出的动画如何在Web页面上播放:

如果电脑上没有AE的话,需要安装AE CC2014或更高版本。以AE CC2017为例:

6e54d385d18ac9458cb0b2af66bb9f56.png

(AE CC2017 欢迎界面)

AE安装完成后,安装Bodymovin插件。

安装插件有几种方法,比如直接到Adobe的插件中心下载插件(地址:https://creative.adobe.com/addons/products/12557,一般不是最新版),也可以到Bodymovin的GitHub首页下载最新版的插件并安装。我推荐第二种方法,这个方法步骤如下:

2.1 到Bodymovin的GitHub首页(地址:https://github.com/bodymovin/bodymovin)克隆项目到本地,或者下载.zip包。

c08e6facda37ec92cd2e1b35b1eec2c6.png

2.2 在项目目录的“/build/extension”目录下找到“bodymovin.zxp”文件,这个就是插件包了。

2.3 下载安装ZXP Installer(地址:http://aescripts.com/learn/zxp-installer/),打开软件,点击“File”>“Open”菜单项载入上述.zxp插件包,ZXP Installer会自动开始安装。安装完成后的软件主页面如下图所示,表示插件已成功安装。

17cecab9c449bf7e7daadde9e4feca56.png

打开AE,点击“编辑”>“首选项”>“常规”菜单项,选中“允许脚本写入文件和访问网络”,点击确定。

984fd475d230d751bf8f20502dc295ad.png

点击“窗口”>“扩展”>“Bodymovin”菜单项,就可以打开Bodymovin的界面使用插件了。

f0262b5a65f88db25977a579b1094055.png

我们在空的AE项目里,新建一个名为“合成1”的合成,并制作一段简单的动画:

a63f6efd4dd30faac3cc852846f2d3c7.png

打开Bodymovin插件窗口,可以发现“合成1”出现在了下面的列表中。选中“合成1”,设置好json文件输出位置,点击“Render”。

fa4995de3664bd7ef01992ee596b8f15.png

Bodymovin还为生成出的json文件提供了预览功能,点击插件界面上的“Preview”按钮,点击“Browse”载入刚刚生成的json文件,就会看到,动画被原汁原味地导出了:

ac4dc35a59d97fbdb26b0f43a74f9b66.png

接下来我们新建一个网页来播放这段动画。把Bodymovin的GitHub项目目录下的“\build\player\bodymovin.js”和刚刚生成的json文件复制到网页根目录,新建一个html文件,代码如下:

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

打开这个页面,就会发现动画成功跑起来了,是不是很黑科技?

b6e9c592f7b1d3dd2cf0e901ed0b2cc9.png

如果想让json版动画跑在Android/iOS设备上,在GitHub上搜索“lottie”,然后选择自己感兴趣的平台吧。

8f5d6026d9e9e87e08168aebdb443368.png

记得在FDCon2017大会上,渚薰演讲完毕后,有个人提出了我一直想问的问题:Adobe已经推出HTML5动画设计软件An(Adobe Animate CC),为什么不用它而要用这种方式?渚薰答道,An的前身就是Flash,它生成出来的H5动画是用js写的(使用CreateJS库),后期修改和维护会更复杂。确实如此,用过Bodymovin之后,不难看出它的灵活性的确很高,而且json形式的动画也远比js写出来的动画更适合跨平台。实在叹服,为Bodymovin点10086个赞。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uncaught ReferenceError: lottie is not defined是一个JavaScript错误,表示在代码中使用了lottie变量,但该变量未被定义。要解决这个错误,你可以按照以下几个步骤进行操作: 1. 确保你已经正确引入了lottie库。在你的HTML文件中,应该有一个script标签来引入lottie库的JavaScript文件。例如: ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.7.4/lottie.min.js"></script> ``` 2. 确保你在使用lottie变量之前已经加载lottie库。在你的JavaScript代码中,确保在使用lottie变量之前,lottie库已经被完全加载和初始化。你可以使用DOMContentLoaded事件来确保在文档加载完成后再执行相关代码。例如: ```javascript document.addEventListener("DOMContentLoaded", function() { // 在这里使用lottie变量 }); ``` 3. 检查你的代码中是否存在拼写错误或语法错误。确保你正确地使用了lottie变量,并且没有其他语法错误导致lottie无法被正确识别。 4. 如果你是在使用模块化的开发环境(如Webpack、Rollup等),请确保你已经正确地导入和使用了lottie库。根据你的具体环境和配置,可能需要使用import语句或其他方式来导入lottie库。 请注意,以上步骤是一般性的解决方法,具体解决方案可能因你的代码和环境而异。如果以上方法无法解决问题,请提供更多的代码和错误信息,以便我能够更准确地帮助你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值