什么是序列帧类H5
我们遇到的一类H5,其中包括“强动画”效果,UI设计提供的是一系列序列帧的素材时,前端将序列帧素材还原成动画进行展示的H5.
几种实现方法
gif
采用gif格式的图片来展示序列帧动画,会存在图片文件大,移动端失真以及安卓端卡顿,以及循环播放情况下有时只会播放一次的情况。只能作为零碎的点缀素材时使用,不推荐复杂动画使用gif来实现。
canvas基本实现
通过canvas画布中通过drawImage方法动态改变序列帧图片,根据时间间隔,重复进行画布的清除和重绘,清除前一帧画面内容,创建后一帧画面。
改方法只适用于简单的动画元素,且页面不应该有动作和动画关联,比如点击切换动画,此时由于频繁的重绘,会阻塞js的其他的处理,比如计时器等。
相关案例 圣诞跑H5.
解决阻塞问题的方法:针对计时器等计算操作,可以通过web worker线程进行计算,和主线程进行通知。
vFramePlayer序列帧图片播放插件
该插件是一款序列帧图片播放插件,支持通过canvas\img播放,可控制播放速度,可循环播放、倒序播放,设置循环播放及监听事件等功能。在canvas的处理情况下已经进行了优化处理。
使用该插件需要注意的是,提前预加载所有的序列帧图片,并且将其作为数组参数传给插件。
CreateJs
CreateJS是基于HTML5开发的一套模块化的库和工具。通过结合一些常用的库如 EaselJs、TweenJs等可以非常快捷的开发基于HTML5的动画和交互应用。
在 Adobe Animate 使用HTML5标签元素的功能,创建接口,动画,和资源库,并可以直接导出可读性强的,高效的 CreateJS 代码。
ZO?是一个AIR应用出口SWF动画作为EaselJS spritesheets用于画布和CSS。保持帧标签、重用相似帧及更多功能!
该库在微信小游戏的开发中较常见。
PixiJS
Pixi.js 是一个开源的HTML5 2D 渲染引擎,使用 WebGL 实现,不支持的浏览器会自动降低到 Canvas 实现。能帮助展示、驱动和管理富有交互性的图形、制作游戏。使用JavaScript以及其他HTML5技术,结合PixiJS引擎,可以创建出丰富的交互式图形,跨平台的应用程序和游戏。PixiJS 的目标是提供一个快速且轻量级的2D库,并能兼容所有设备。此外,让开发者无需了解WebGL,就可以感受到硬件加速的力量。
PixiJS针对页面中所有的动画元素都可以独立进行相关设置和操作、增加事件,方便我们根据需要来实现对应的展示和交互。
基本的使用方法是:
创建一个场景;
在场景中创建舞台(stage)和渲染器(render);
画面中的元素是以创建精灵(sprite)的方式来实现;
之后进行展示和动画的播放;
针对序列帧素材,我们可以通过创建雪碧图(CSS Sprite,是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片上,然后利用css的背景定位来显示需要显示的图片部分)的形式来减少加载资源请求,此处推荐Texturepacker工具,堪称PixiJS开发的辅助神器。
不仅仅序列帧能够放到雪碧图里面,其他的素材也可以根据实际情况放到雪碧图中,这样能够有效降低页面资源请求数
Texturepacker可以根据选择的对应框架,来生成PixiJS所需要的雪碧图素材以及相关的json文件,方便使用PixiJs的开发。通过其loader功能加载素材获取资源信息。
案例:
微业贷抽签H5(其中的抽签动作和光效)
H5场景小动画实现之PixiJs实战
优点:便于UI设计根据设计情况直接输出序列帧素材,通过前端开发能够相关完整的还原其动画效果
Phaser
Phaser 是一款快速、免费以及开源 HTML5 游戏框架,它支持 WebGL 和 Canvas 两种渲染模式,可以在任何 Web 浏览器环境下运行,游戏可以通过第三方工具转为 iOS、Android 支持的 Native APP,允许使用 JavaScript 和 TypeScript 进行开发。和上面提到的PixiJS类似。具体的使用方法大家自行参考吧,只作为引入。
Egret
Egret是一套HTML5游戏开发解决方案,产品包含Egret Engine,Egret Wing,EgretVS,Res Depot,Texture Merger,TS Conversion,Egret Feather,Egret Inspector等 ...
什么是一镜到底
一镜到底,是指拍摄中没有cut情况,运用一定技巧将作品一次性拍摄完成。
表现形式
- 画中画(例如:网易-《娱乐画传》, 缩放同时平移)
- 时空穿梭(例如:天猫-《穿越时空的邀请函》, 以中心缩放)
- 滚动动画(例如:网易-《爱的形状》,平移为主,期间播放其他动画)
- 视频(这个好像没什么好说的...跟本文无关)
实现方法
技术需求
- 绘制画面:这里我们一般选用基于canvas的库,性能会更好,也方便实现效果。(如上面提到的CreateJs、PixiJs、Egret等)
- 添加动画:其中包括过渡、帧动画,因此需要一个动画库。(如 TweenMax等)
- 进度控制:要实现通过用户操作,来控制整个H5的前进、后退、暂停等,我们会需要进度控制相关的库。(如TimelineMax)
- 用户操作:一镜到底的H5一般都需要用户操作以“播放”,按住或滑动,按住比较简单,用原生事件实现就好,滑动相对复杂一点,涉及阻尼运动,因此需要一个滑动相关的库。(如 AlloyTouch等)
实现基本流程
- 用Pixi创建场景,加入到想要加入的DOM容器当中。
- 用Pixi.loader加载精灵图。
- 将精灵图、背景及文本等元素绘制出来。
- 用TimelineMax创建一个总的Timeline,初始设置paused为true,可以设定整条Timeline的长度为1。
- 用TweenMax创建好过渡动画,然后将TweenMax加入到Timeline中,duration比如是占10%的话,就设定为0.1,从滚动到30%开始播放动画的话,delay就设置为0.3。
- 用AlloyTouch创建滚动监听,并设置好滚动高度,例如1000。
- 监听AlloyTouch的change事件,用当前滚动值 / 滚动高度 得到当前页面的进度。
- 调用总Timeline的seek方法,寻找到当前页面进度的地方,可以简单理解成拨动视频播放器的进度条滑块。
- 至此就可以通过用户滑动操作,控制页面元素的动画播放、后退了。
总结
通过上面针对序列帧和一镜到底的简单梳理,既能够让前端比较好的还原设计给出的动画过程,还能够以此来辅助相关类型的H5的开发,满足更多的场景需求的开发。
参考资源:
从零到一:实现通用一镜到底 H5
本网站是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 本网站还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 除此之外,本网站还拥有一个活跃的社区,您可以在社区中与其他前端开发者交流技术、分享经验、解决问题。我们相信,社区的力量可以帮助您更好地成长和进步。 在本网站中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!代办报建
本公司承接江浙沪报建代办施工许可证。
联系人:张经理,18321657689(微信同号)。
9条评论
收藏了,怕楼主删了!http://zd2d9.sikao51.com/6/5.html
知识就是力量啊!http://test.cqyiyou.net/test/
看帖、回帖、拿分、走人http://d7l24.cndongdang.cn
不错的帖子,值得收藏!http://5816v6.79e6.com
精华帖的节奏啊!http://dit.jinyuen.com
这一年啥事没干,光研究楼主的帖子了!http://8n7xm.60bq.com
吹牛的人越来越多了!http://yptd.ja2c.com
楼主好聪明啊!http://www.guangcexing.net/voddetail/mvDSQBysu.html
我和我的小伙伴都惊呆了!http://j25gl.soulmaker.cn
发表评论