html5的canvas代码(H5最强接口之canvas实现动态图形功能)
html5的canvas代码
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实现动态图形功能 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
- html5+css样式代码(详解HTML5中CSS外观属性)
- html5页面强制刷新(移动端html5判断是否滚动到底部并且下拉加载)
- html5弹出窗口(Html5页面上如何禁止手机虚拟键盘弹出)
- html5图片上下滚动(HTML5 图片悬停放大的实现代码示例)
- HTML5<q> 与 <blockquote> 的区别
- h5实现弹出悬浮窗(Html5监听手机摇一摇事件的实现)
- html5怎么设置左边input(HTML5中input输入框默认提示文字向左向右移动的示例代码)
- html5新增特性(总结html5自定义属性有哪些)
- html5 拍照上传(Html5在手机端调用相机的方法实现)
- html5炫酷代码(HTML5超炫酷粒子效果的进度条的实现示例)
- html5布局(Html5让容器充满屏幕高度或自适应剩余高度的布局实现)
- html5音频处理(recorder.js 基于Html5录音功能的实现)
- wordpress如何在文章中自定义html(wordpress添加Html5的表单验证required方法小结)
- 如何替换html5视频播放器(HTML5自定义视频播放器源码)
- html5带放大镜的搜索代码(html5借用repeating-linear-gradient实现一把刻度尺ruler)
- html5 webrtc技术详解(Html5 webRTC简单实现视频调用的示例代码)
- 菲律宾安全吗(菲律宾安全吗)
- 泰国旅游攻略(泰国旅游攻略必去景点)
- 数字藏品市场有多乱 周杰伦丢了 一只猴 ,损失超300万(数字藏品市场有多乱)
- 这里输入关键词(怎么输入关键词搜索)
- 得这个 难治病 的人太多了,300个人赶到杭州商量怎么办(得这个难治病的人太多了)
- 经度,世界时间腕表的灵魂(世界时间腕表的灵魂)
热门推荐
- docker容器启动自动执行命令(docker run 运行容器自动结束的解决)
- nginx怎么用ssl证书(制作能在nginx和IIS中使用的ssl证书)
- <i>和<em>、<b>和<strong>的区别
- dockerswarm网络模式(详解Docker Swarm概念与用法)
- react新手指引页面编写(React+TypeScript进行项目构建案例讲解)
- 云服务硬盘挂载有几种方法(腾讯云 阿里云 挂载硬盘方法数据盘)
- 怎么用腾讯云主机搭建网站(用云主机怎么搭建网站?云主机建网站完整流程)
- table rowspan和colspan
- sqlserver数据库文件包括(详解SQL Server数据库状态和文件状态)
- dbcc checkdb 用法
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9