带你进入2d动画世界
title: 带你了解2D动画世界 speaker: BETH transition: slide3 files: /js/demo.js,/css/demo.css,/js/zoom.js theme: pick
[slide]
带你了解2D动画世界

美小技术部-前端组
[slide]
刀耕火种的前端史
年份 | 事件 |
---|---|
1994 | Tim Berners-Lee(万维网之父)创建W3C,Tim基友发布CSS 网景推出了第一版Navigator 前端起点(Web 1.0时代) |
2003 | SVG于2003年1月14日成为W3C推荐标准,SVG 的主要竞争者是 Flash,SVG可缩放矢量图形 |
2005 | 谷歌利用Ajax技术打造Gmail和谷歌地图之后-Ajax大受关注 前端的第一次飞跃(进入Web2.0时代) |
2010 | 推出html5的画布功能-Canvas,在网页上绘制2D图像 canvas 元素绘制路径、矩形、圆形、字符以及添加图像 |
2014 | HTML5标准发布,支持网页端的Audio、Video等多媒体功能,基于SVG、Canvas、WebGL及CSS3的3D功能,Html5取代Flash在移动设备的地位 |
2015 | Flash正式走向消亡,Adobe公司推出Animate CC取代之前Flash Professional CC;支持Flash SWF、AIR格式的同时,还会支持HTML5 Canvas、WebGL,并能通过可扩展架构去支持包括SVG在内的几乎任何动画格式。 |
[slide]
Flash的没落
[slide]
2D的世界
2D动画 | 是指二维交互式动画, 也就是我们通常所说的2d游戏种的美术资源(人物行走、人物状态、地图等等)都是以png或jpg的图形文件渲染而成,2d是没办法完成视角转换(现在比较流行的2D设计形式:扁平化、MEB等) |
间动画和帧动画 | 区间动画:从A到B执行的过度动画; 逐帧动画:从A到B,从B到C的连续的动画播放。 其中动画标准是一秒24帧,也就是24张画面组成一秒。电视播放标准是25帧每秒(但是12) 关键帧:能够叙述故事发展的重要帧 中间帧:过度帧,补充重要帧之间,使动画连续 极端帧:极端帧不一定是关键帧,是两个关键帧之间的次重要 |
2D动画技术 | SVG、Canvas、CSS3 |
2D动画js框架 | jQuery Transit、Transform.js、Move.js、Velocity.js、vivus.js、snabbt.js |
[slide]
带你了解CSS3的世界
变形(transform) | 3D旋转:rotate旋转 \ 2D旋转:scale缩放 \ skew扭曲 \ translate移动 \ matrix矩阵变形 |
过度(transition) | property duration timing-function delay(all 0 ease 0) |
动画(animation) | animation-name \ animation-duration \ animation-delay \ animation-iteration-count(infinite) \ animation-direction \ animation-play-state \ animation-fill-mode \ animation-timing-function(控制时间函数-速度曲线函数-缓动函数) |
animation-timing-function | linear、ease-in、ease-out、ease-in-out、cubic-bezier(贝塞尔曲线) |
Keyframes | 固定的语法规范@keyframes *name { 0% {} 100% {} } |
Demo | http://www.html5tricks.com/demo/html5-boy-animation/index.html http://www.html5tricks.com/demo/css3-shake-head-animation/index.html http://localhost:8080/#/animate |
[slide]
timing-function
[slide]
带你了解Velocity.js
Velocity 是一个简单易用、高性能、功能丰富的轻量级JS动画库。它能和 jQuery 完美协作,并和$.animate()有相同的 API, 但它不依赖 jQuery,可单独使用。 Velocity 不仅包含了 $.animate() 的全部功能, 还拥有:颜色动画、转换动画(transforms)、循环、 缓动、SVG 动画、和 滚动动画 等特色功能。
[slide]
Velocity.js用法
依赖 | JQuery、Velocity、Velocity.UI |
用法 | $ele.velocity({ width: 100 }, { duration: 300 }) |
$element.velocity({
width: "100px", // 动画属性 宽度到 "500px" 的动画
* property2: value2 // 属性示例
}, {
/* Velocity 动画配置项的默认值 */
* duration: 300, // 动画执行时间
* easing: "swing", // 缓动效果
queue: "", // 队列
begin: undefined, // 动画开始时的回调函数
* progress: undefined, // 动画执行中的回调函数(该函数会随着动画执行被不断触发)
* complete: undefined, // 动画结束时的回调函数
display: undefined, // 动画结束时设置元素的 css display 属性
visibility: undefined, // 动画结束时设置元素的 css visibility 属性
loop: false, // 循环
* delay: false, // 延迟
mobileHA: true // 移动端硬件加速(默认开启)
});
[slide]
Velocity的链式动画
$element
/* 先执行宽度变为75px的动画 */
.velocity({ width: 75 })
/* 等前面的宽度动画结束后,再执行高度变为0的动画 */
.velocity({ height: 0 });
[slide]
Velocity的时间轴动画
const enterAn = [{
elements: cloud1,
properties: 'transition.slideUpBigIn',
options: { delay: 300, complete: function() { cloud1.addClass('shake-cloud1'); } }
}, {
elements: cloud2,
properties: 'transition.slideUpBigIn',
options: { sequenceQueue: false, complete: function() { cloud2.addClass('shake-cloud2') } }
}, {
elements: cloud3,
properties: 'transition.slideDownBigIn',
options: { sequenceQueue: false, complete: function() { cloud3.addClass('shake-cloud3'); } }
}, {
elements: sun,
properties: 'transition.slideRightBigIn',
options: { sequenceQueue: false, complete: function() { sun.addClass('uniformlyRotating'); } }
}];
$.Velocity.RunSequence(enterAn);
[slide]
动画开发流程
需求分析 | 需要的动画场景和素材整理 |
素材整理 | 涉及到帧动画的图片素材,需要对其进行定位 |
代码编写 | 定位动画静态元素,添加不需要事件驱动的CSS3动画;添加需要事件驱动的JS动画(连续动画,帧动画) |
Demo演示 | http://localhost:8080/#/hello |
[slide]
