Sketch制作GIF动画--基础篇(改良版)

前言

其实这个教程并非我的原创,但是由于原版里遗漏了些步骤,所以我在此为各位补足遗漏的部分以及一些改良后的效果,希望大家喜欢之余,为我点个赞,感谢🙏

使用sketch不仅能够制作静态的UI图,也能制作炫酷的GIF动图。这功劳还是要仰仗强大的AnimateMate插件。这边文章讲述了AnimateMate插件的安装和使用,并结合实践讲述了常用动画的基本使用,目的就是为了能让大家快速上手。下一遍文章将会讲述更高级的动画实现。

AnimateMate插件的安装

sketch有两种安装插件的方法,一种是传统的安装方式,即将插件解压后放到Plugins文件目录下,重启sketch即可。但是这种安装方法需要一个个的去找插件,非常麻烦。我这里给大家介绍第二种安装插件的方法,就是先下载一个sketch插件管理工具sktch toolbox,通过sketch toolbox可以很方便的对插件进行安装和卸载,就像xcode下的Alcatraz一样。这里加上sketch toolbox的下载地址。下载并安装后即可使用。打开sketch toolbox,然后搜索AimateMate插件,点击install即可安装,简单吧。

AnimateMate插件使用

一. 功能介绍

插件的功能还是比较简单明了的,AnimateMate总共提供了三种创建动画的方式,分别是Create Animateion(基本动画),Offect Animation(偏移动画),Random Animation(随机动画)。这里我们只讲解基本动画的使用,剩下两种会在后面的进阶篇中进行讲解。

1、Create Animation(快捷键:cmd+con+opt+K):创建基本动画,包括Postion,Size,Transform,Opacity等属性的动画

2、Edit Animation(快捷键:cmd+con+opt+L):编辑动画,对动画的属性值进行编辑。

3、Delete Animation(快捷键:cmd+con+opt+D):删除动画,如果动画不需要了,可以通过该功能进行删除。

4、Retrun Keyframe:返回某一刻的关键帧layer的状态,比如一个矩形第0个关键帧的横坐标为10,第10个关键帧的横坐标为100,那么我们返回这个矩形第0个关键帧的状态,此刻该矩形就会回到横坐标为10的位置。这样一个功能的好处就是方便查看各个关键帧的状态。

5、Reverse Keyframe:反转一个范围内关键帧的动画。比如从0到10这10个关键帧中一个矩形的动画是从横坐标为10变为100。那么反转这个矩形0到10关键帧之间的动画之后,该矩形的动画就变成了从横坐标为100变为10。一般这个功能比较少用到。

6、Export Animation:导出动画,选择对应的画板把动画导出。导出动画如果选择单个图层来导出,那么将只会导出这个图层的动画效果,其他图层的动画将被忽略,所以我们一般选择对应的画板来导出整个画板的动画。导出动画可以既可以导出png图片集合也可以导出gif动画。

二.创建动画原理

AnimateMate创建基本动画只需要设置三个值,分别是Properties(属性值)、Keyframe Number(关键帧个数)、Easing Type(动画过度效果)。

1、Properties:属性的变化。AnimateMate支持Position(x和y)、Size(Width和Height)、Trasform(Rotate)、Opacity等属性的动画。

2、Keyframe Number:即为关键帧的个数。关键帧的个数决定着动画执行的长短。

3、Easing Type:Easing Type即为动画过渡效果。Easing是jQuery自定义动画用来设置动画过度效果的一个参数,在jQuery Easing Plugin中提供了如linearEase、easeOutExpo、easeOutBounce等30多种效果。AnimateMate插件同样也提供了所有的效果供大家使用,大家可以点击这里去看每一种easing的演示效果。

AnimateMate实践演示

  1. Position动画

1.1 position动画最终实现的效果

position.gif

1.2 首先创建一个200x200的画板,命名为position,然后画一个大小为140x140的圆,命名为out_circle,填充颜色为#5AC8FF;Borders大小为6,颜色为#f6f6f6。再画一个大小为26x26大小的圆,命名为in_layer,填充颜色为白色。

屏幕快照 2017-07-06 下午4.16.14.png

1.3 选择in_circle,设置横坐标和纵坐标都为60,然后选择Plugins->AnimateMate->Create Animation

2.png

1.4 创建第0帧的动画。keyframe Number为0,Easing Type保持默认值linearEase。

3.png

1.5 选择in_circle,设置横坐标为114,纵坐标都为60,然后选择Plugins->AnimateMate->Create Animation

4.png

1.6 创建第10帧的动画(我总共设置了40帧动画,每一次转折为10个帧,如果你觉得10个帧运动太快,可以添加关键帧的个数)。keyframe Number为10,Easing Type保持默认值linearEase。

5.png

1.7 选择in_circle,设置横坐标和纵坐标都为114,然后选择Plugins->AnimateMate->Create Animation

6.png

1.8 创建第20帧的动画。keyframe Number为20,Easing Type保持默认值linearEase。

7.png

1.9 选择in_circle,设置横坐标为60,纵坐标为114,然后选择Plugins->AnimateMate->Create Animation

8.png

1.10 创建第30帧的动画。keyframe Number为30,Easing Type保持默认值linearEase。

9.png

1.11 选择in_circle,设置横坐标和纵坐标都为60,然后选择Plugins->AnimateMate->Create Animation

10.png

1.12 创建第40帧的动画。keyframe Number为40,Easing Type保持默认值linearEase。

11.png

1.13 选中position画板,选择Plugins->AnimateMate->Export Animation导出动画,设置中选GIF Animation即可。

12.png

2.Size动画

2.1 size动画最终实现的效果

原版教程中的动画效果有些突兀,并不是非常流畅,后来我增加了一个步骤,看起来就流畅了许多,现在看一下原版和我改后的效果。

size(原版).gif
bigandsmall.gif

2.2 copy一份position画板,并命名为size。

13.png

2.3 选中in_circle,选择Plugins->AnimateMate->Delete Animation删除in_layer上的动画效果。

14.png

2.4 选择in_circle,设置in_circle的大小为26x26。选择Plugins->AnimateMate->Create Animation

屏幕快照 2017-07-10 下午11.59.04.png

2.5 创建第0帧的动画。keyframe Number为0,Easing Type保持默认值linearEase(傻瓜式操作开始)。

3.png

2.6 选择in_circle,设置in_circle的大小为100 x100。选择Plugins->AnimateMate->Create Animation。

屏幕快照 2017-07-11 上午12.02.59.png

2.7 创建第30帧的动画。keyframe Number为30,Easing Type保持默认值linearEase。

9.png

2.8 选择in_circle,设置in_circle的大小为26 x26。选择Plugins->AnimateMate->Create Animation。

屏幕快照 2017-07-10 下午11.59.04.png

2.9 创建第60帧的动画。keyframe Number为60,Easing Type保持默认值linearEase。

19.png

3.0 最后选中size画板,选择Plugins->AnimateMate->Export Animation导出动画即可(别忘了设置GIF Animation噢!)。

  1. Transform动画

3.1 transform动画最终实现效果

circle.gif

3.2 copy一份position画板,命名为transform。

15.png

3.3 选中in_circle和out_circle建成组Group。

16.png

3.4 选中Group,设置Rorate为0°,选择Plugins->AnimateMate->Create Animation

17.png

3.5 创建第0帧的动画。keyframe Number为0,Easing Type保持默认值linearEase。

3.png

3.6 选中Group,设置Rorate为359°,选择Plugins->AnimateMate->Create Animation。

18.png

3.7 创建第40帧的动画。keyframe Number为40,Easing Type保持默认值linearEase。

11.png

3.8 选中transform画板,选择Plugins->AnimateMate->Export Animation导出动画即可(还是老规矩,别忘了设置GIF Animation)。

  1. Opacity动画

4.1 opacity动画最终实现效果的

原版的效果还是一如既往的有些突兀,于是我又稍作修改,增加了一个步骤。以下是原版和我改后的版本。

原版.gif
opacity.gif

怎么样?看起来是不是更加自然?

4.2 copy一份size画板,命名为opacity。

20.png

4.3 选中in_circle,设置其Opacity为100%,选择Plugins->AnimateMate->Create Animation。

21.png

4.4 创建第0帧的动画。keyframe Number为0,Easing Type保持默认值linearEase。

3.png

4.5 选中in_circle,设置其Opacity为0%,选择Plugins->AnimateMate->Create Animation。

22.png

4.6 创建第30帧的动画。keyframe Number为30,Easing Type保持默认值linearEase。

9.png

4.7 选中in_circle,设置其Opacity为100%,选择Plugins->AnimateMate->Create Animation。

21.png

4.8 创建第60帧的动画。keyframe Number为60,Easing Type保持默认值linearEase。

19.png

4.9 选中opacity画板,选择Plugins->AnimateMate->Export Animation导出动画即可(我不想再说设置GIF Animation了😂)。

  1. 组合动画

以上所有的动画中都是单个图层在进行动画,那么问题来了,当我们要设置多个图层一起进行动画该如何处理。
有两种情况,一种是多个图层之间做的动画是相同的;一种是多个图层之间做的动画是不同的。
当多个图层所做的动画是相同的时候,那么我们在设置动画的时候可以同时选中多个图层。当多个图层所做的动画不相同时,比如我要让两个圆一个做放大动画一个做缩小动画,那么我们就可以分别对这两个圆设置动画即可。

5.1 group动画的最终实现效果

原版的和我改良后的效果对比

23.gif
group.gif

5.2 copy一份position画板,命名为group。将in_circle放到中间位置,其填充颜色为白色不变。

24.png

5.3 选择in_circle,设置其大小为26x26,选择Plugins->AnimateMate->Create Animation。

25.png

5.4 创建in_circle的第0帧的动画。keyframe Number为0,Easing Type保持默认值linearEase。

3.png

5.5 选择in_circle,设置其大小为70x70(当然你也可以尝试其他大小),选择Plugins->AnimateMate->Create Animation。

26.png

5.6 创建in_circle的第20帧的动画。keyframe Number为20,Easing Type保持默认值linearEase。

7.png

5.7 选择out_circle,设置其大小为140x140,选择Plugins->AnimateMate->Create Animation。

27.png

5.8 创建out_circle的第0帧的动画。keyframe Number为0,Easing Type保持默认值linearEase。

3.png

5.9 选择out_circle,设置其大小为78x78,选择Plugins->AnimateMate->Create Animation。

28.png

5.10 创建out_circle的第20帧的动画。keyframe Number为20,Easing Type保持默认值linearEase。

7.png

5.11 分别重复in_circle和out_circle的第一步设定,设置in-circle大小为26X26,out_circle大小为140*140,选择Plugins->AnimateMate->Create Animation。

5.12 分别创建in_circle和out_circle的第40帧的动画。keyframe Number为40,Easing Type保持默认值linearEase。

5.13 选中group画板,选择Plugins->AnimateMate->Export Animation导出动画即可。

  1. Easing Type的使用

给我们的动画设置合理的easing type可以让我们的动画更富有新意,更接近真实。比如我们要制作一个弹簧的动画,那么单单只靠线性过度效果是无法实现的,借助easing type中的easeOutElastic过度效果则可以轻松实现。

6.1 easing动画的最终实现效果

29.gif

6.2 copy一份position画板,命名为easing。将in_circle放到中间位置。

30.png

6.3 选择in_circle,设置其大小为26x26(可按自己想法更改),选择Plugins->AnimateMate->Create Animation。

31.png

6.4 创建第0帧的动画。keyframe Number为0,Easing Type设置为easeOutElastic。

32.png

6.5 选择in_circle,设置其大小为75x75,选择Plugins->AnimateMate->Create Animation。

33.png

6.6 创建第30帧的动画。keyframe Number为30,Easing Type这里可以随意设置(建议还是easeOutElastic)。

34.png

6.7 选中easing画板,选择Plugins->AnimateMate->Export Animation导出动画即可。

总结:

这个教程是我在看过原作者教程后,发现其中的一些小问题,以及原作者遗漏的一些步骤,决定将其补足,希望对各位有所帮助。其中许多步骤事实上可以按照自己的想法自由更改,大家可以自行尝试,也能做出属于自己想法的小动画来。不过AnimateMate制作动画也是有其局限性的,对于非线性动画AnimateMate还是无能为力的。另外,向原作者wythetan致敬,我是站在前辈的肩膀上才能看的更远的......

原作者教程链接:http://www.jianshu.com/p/81287da2136b

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • 前言 自从小tan上次出了一篇关于用Sketch制作自定义的APP下拉刷新GIF动画后,有不少小伙伴说期待出一篇关...
    peaktan阅读 34,496评论 34 91
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,411评论 2 45
  • 显式动画 显式动画,它能够对一些属性做指定的自定义动画,或者创建非线性动画,比如沿着任意一条曲线移动。 属性动画 ...
    清风沐沐阅读 1,926评论 1 5
  • 节前要忙几天,稳重干活,别因为自己的大意把客户的车扔在路上。 体验:先有安全意识认知。才能真正做到。 转身...
    京心达张新波阅读 244评论 0 0
  • 蝉的沉默与音乐无关音乐早就停止了这个夏天它把曲子都唱完了 只是像我们这些带秋意的叶子还依依不舍
    俗然阅读 261评论 8 11