您现在的位置是:网站首页> 编程资料编程资料
H5最强接口之canvas实现动态图形功能调用HTML5的Canvas API绘制图形的快速入门指南深入解析HTML5 Canvas控制图形矩阵变换的方法实例讲解利用HTML5 Canvas API操作图形旋转的方法HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvahtml5的画布canvas——画出弧线、旋转的图形实例代码+效果图html5-Canvas可以在web中绘制各种图形
2021-08-31
1773人已围观
简介 这篇文章主要介绍了H5最强接口之canvas实现动态图形功能,需要的朋友可以参考下
上个文章中我们分享了如何利用canvas来进行图形绘制,但是绘制的都是静态图形,本周我们就来学习如何利用canvas进行动态图形绘制。
什么是动画?
我们在绘制动画之前必须要弄清楚什么是动画,一个动画最起码需要哪些基本条件呢?
我们可以用一个工具展示动画是什么?
这是利用PPT绘制出的一个动画效果

根据以上PPT绘制出的一个动画效果我们可以看到,快速在几张PPT页面进行切换时连起来看到的就是一个动画效果。
这就是动画实现的基本要素:
单位时间内连续播放多张图片。这个单位时间一般以秒为单位,在计算机渲染的图形中要想获得一个足够流畅的视频,每秒钟内的图片数量必须要大于等于显示器的刷新频率(这个刷新频率一般为60hz)
每图片内的物体状态(大小,形状,颜色,位置,角度等等)必须要发生改变
那么我们在canvas中如何实现这两个条件呢?
如何在1s内绘制60张图形
我们可以把这话变形一下,就变成每隔1/60s就绘制一张图形。在JavaScript中要想实现每隔一段时间做一件事情,我们使用的方法是用定时器setinterval。
什么是定时器?
setinerval(function f(){},t),定时器内部可以传入两个参数,一个是函数,一个是时间,这个代码的意思就是每隔t ms就执行一次函数f。
那么我们就用这个来实现我们所需要的每隔1/60s绘制一张图形
setInterval(function(){ canCon.fillStyle="black"; //canCon.fill的意思在这张宣纸上拿起一只画实心图形的笔, //style="black"的意思就是蘸上一个黑色墨 //连起来看的话就是拿起一只画实心图形的笔并粘上有黑色的墨水 canCon.arc(233,233,66,0,Math.PI*2); //在宣纸上构思画一个圆(圆心的X位置,Y位置,圆的半径,从什么位置开始画圆,画到哪里结束); canCon.fill();//下笔作画 },1000/60)最终效果

但是现在还没有一个动画效果,因为1s内绘制的60张图形都是一模一样的,所以接下来就要在每一张图形绘制的时候改变元素的状态。
顺便给大家推荐一个裙,它的前面是 537,中间是631,最后就是 707。想要学习前端的小伙伴可以加入我们一起学习,互相帮助。群里每天晚上都有大神免费直播上课,如果不是想学习的小伙伴就不要加啦。
(537-631-707)
如何改变元素的状态?
一个圆的位置是由圆心的坐标决定的,那么我们在每次绘制canvas的时候就改变一次元素的位置即可
vary=100;//给一个初始的圆心位置,接下来每次绘制的时候圆心的y位置都往下移动一个距离 setInterval(function(){ canCon.fillStyle="black"; //canCon.fill的意思在这张宣纸上拿起一只画实心图形的笔, //style="black"的意思就是蘸上一个黑色墨 //连起来看的话就是拿起一只画实心图形的笔并粘上有黑色的墨水 canCon.arc(233,y++,66,0,Math.PI*2); //在宣纸上构思画一个圆(圆心的X位置,Y位置,圆的半径,从什么位置开始画圆,画到哪里结束); canCon.fill();//下笔作画 },1000/60)
此时我们看到的不是一个运动的圆,更像是一个不断延伸的进度条。原因其实很简单,咱们在每次绘制一个新的图形的时候没有把原来的图形给擦出掉了,这样的画面就是n多图形叠加在一起的结果了。所以我们每次在绘制新的图形的时候就要把原来的给擦除掉,那么如何做到呢?
vary=100;//给一个初始的圆心位置,接下来每次绘制的时候圆心的y位置都往下移动一个距离 setInterval(function(){ canCon.clearRect(0,0,500,500);//擦除一个矩形区域 矩形的左上角坐标和矩形的宽高 canCon.fillStyle="black"; //canCon.fill的意思在这张宣纸上拿起一只画实心图形的笔, //style="black"的意思就是蘸上一个黑色墨 //连起来看的话就是拿起一只画实心图形的笔并粘上有黑色的墨水 canCon.arc(233,y++,66,0,Math.PI*2); //在宣纸上构思画一个圆(圆心的X位置,Y位置,圆的半径,从什么位置开始画圆,画到哪里结束); canCon.fill();//下笔作画 },1000/60)但此时还是没有效果,那么到底是什么情况呢?我们可以回想一下我们小时候画画的场景,我们在擦除画纸上某一区域的时候是不是需要首先把画笔抬起来,这样的话我们才能用橡皮擦擦掉纸上的某些区域,所以我们在擦除canvas的某个区域之前先要把笔给抬起来才行。
vary=100;//给一个初始的圆心位置,接下来每次绘制的时候圆心的y位置都往下移动一个距离 setInterval(function(){ canCon.beginPath();//把笔抬起来 canCon.clearRect(0,0,500,500);//擦除一个矩形区域 矩形的左上角坐标和矩形的宽高 canCon.fillStyle="black"; //canCon.fill的意思在这张宣纸上拿起一只画实心图形的笔, //style="black"的意思就是蘸上一个黑色墨 //连起来看的话就是拿起一只画实心图形的笔并粘上有黑色的墨水 canCon.arc(233,y++,66,0,Math.PI*2); //在宣纸上构思画一个圆(圆心的X位置,Y位置,圆的半径,从什么位置开始画圆,画到哪里结束); canCon.fill();//下笔作画 },1000/60)这样我们就能得到一个运动的圆了

总结
以上所述是小编给大家介绍的H5最强接口之canvas实现动态图形功能 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
相关内容
- 如何在Canvas中添加事件的方法示例如何在Canvas上的图形/图像绑定事件监听的实现html5中监听canvas内部元素点击事件的三种方法详解Canvas事件绑定HTML5 Canvas的事件处理介绍一个不错的HTML5 Canvas多层点击事件监听实例HTML5 Canvas鼠标与键盘事件demo示例详解如何在Canvas中添加事件的方法
- HTML5新增form控件和表单属性实例代码详解html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- Html5 滚动穿透的方法html5实现带视差的轮播图片滚动切换效果源码Html5移动端获奖无缝滚动动画实现示例在线html5拼接轨道滚动钢珠游戏解决HTML5中滚动到底部的事件问题
- 前端实现打印图像功能html2canvas生成清晰的图片实现打印的示例代码html2 canvas生成清晰的图片实现打印功能一个不错的html 打印代码支持翻页CSS2 打印属性让打印HTML文档不出问题将XHTML CSS页面转换为打印机页面将XHTML CSS页面转换为打印机页面html 打印相关操作与实现详解
- html5 canvas绘制网络字体的常用方法HTML5 Canvas 破碎重组的视频特效的示例代码前端实现打印图像功能导出HTML5 Canvas图片并上传服务器功能使用Html5中的cavas画一面国旗
- HTML5超炫酷粒子效果的进度条的实现示例html svg生成环形进度条的实现方法HTML5触摸事件实现移动端简易进度条的实现方法HTML5实现自带进度条和滑块滑杆效果网页加载进度条详解(推荐)HTML页面缩小后显示滚动条的示例代码
- HTML5语义化元素你真的用对了吗HTML5新特性之语义化标签HTML5中语义化 b 和 i 标签HTML5 语义化结构化规范化HTML标签语义化(含H5) 详解HTML5常用的语义化标签浅谈HTML的语义化和一些简单优化浅谈语义化的HTML结构到底有什么好处使用语义化标签去写你的HTML 兼容IE6,7,8HTML标签语义化的介绍XHTML标签语义化介绍
- 解决HTML5中滚动到底部的事件问题Html5 滚动穿透的方法html5实现带视差的轮播图片滚动切换效果源码Html5移动端获奖无缝滚动动画实现示例在线html5拼接轨道滚动钢珠游戏
- 手摸手教你用canvas实现给图片添加平铺水印的实现前端水印的简单实现代码示例前端canvas水印快速制作(附完整代码)html5 canvas实现给图片添加平铺水印canvas 下载二维码和图片加水印的方法前端使用canvas生成盲水印的加密解密的实现
- html5 canvas实现给图片添加平铺水印前端水印的简单实现代码示例前端canvas水印快速制作(附完整代码)手摸手教你用canvas实现给图片添加平铺水印的实现canvas 下载二维码和图片加水印的方法前端使用canvas生成盲水印的加密解密的实现
