基于canvas制作绚丽的倒计时效果

一、先看下效果

项目设计:

数字渲染:数字是存储在一个三维数组里面,通过每次传入一个数字,来取出这个数字对应的点阵模型,这个模型是一个二维数组,有圆点的地方值为1,没有圆点的地方值为0。

圆心位置确定:就是确定一个数字中任意一个小球的圆心坐标。

总体实现:

主要通过一个定时器(setInterval)来不断执行render(渲染函数)和update(更新函数)。

setInterval(function(){render(context);update();},100)

render中分别绘制时间和小球,绘制时间其实就是绘制数字,所以专门有一个renderDigit函数,用于把三维数组中对应的数字绘制出来。
update中通过判断前一个时间和后一个时间是否相等,来生成小球对象,然后添加进一个管理小球的数组中。然后就是更新小球的位置,让小球动起来。

算法优化:

var cnt = 0;for(var j=0; j<balls.length; j++) {if(balls[j].x + RADIUS > 0 && balls[j].x -RADIUS < WINDOW_WIDTH) {//小球还在画布中,则添加到管理小球的这个数组中。balls[cnt++] = balls[j];}}//清除已经弹出画布的while( balls.length > Math.min(350,cnt)){balls.pop();}

控制小球的数量一直在一个范围内,而不是无限的增长。

二、canvas是一个可是使用脚本(通常是javascript)在其中绘制图形的HTML元素,同时canvas也是定义在浏览器上的画布,canvas不仅仅像p标签等是一个元素,更是一个编辑工具,是一套编程接口,它的出现已超过了web基于文本设计的初衷。canvas可以设计出绚丽多彩的动画,奇妙的游戏等,可以使我们的网页绚丽多彩!

三、canvas绘图环境的搭建

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><canvas id="canvas" style="border: 1px solid #000; display: block; margin:50px auto">当前浏览器不支持canvas,请更换浏览器再试!</canvas><script type="text/javascript">window.onload = function () {var canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;var context = canvas.getContext("2d);}</script>
</body>
</html>

注意点:
1、canvas在不指定尺寸时,默认的canvas宽度为300px;高度为150px。
2、canvas是基于状态的绘制环境,不是基于对象的。canvas绘制的所有接口都是由context这个上下文环境所提供的。

四、特殊的方法

context.stroke();绘制已定义的路径。在每一次进行具体的绘制的时候,不是简单的把上一段代码进行绘制,而是检查整个程序中的所有状态,基于这些状态完成一次绘制,也就是说当调用stroke()方法时,会将前面调用的stroke()方法设置的覆盖掉。

绘制圆弧:

context.arc(centerx, centery, radius, startingAngle, endingAngle, acticlockwise=false)

其中,第四个和第五个分别指定的是起始圆弧位置和结束圆弧位置。
最后一个指定是顺时针还是逆时针。默认为false(顺时针)。

无论是顺时针还是逆时针,这种位置关系是永远不变的。

还有就是closePath()对fill()是没有用的。使用fill()对首尾相连的路径进行填充。不管有没有调用closePath(),调用fill()会自动封闭路径,并进行填充。

项目是学习了慕课网刘宇波老师的<<炫丽的倒计时效果Canvas绘图与动画基础>>。在此特别感谢刘老师的免费视频课程。

课程地址:https://www.imooc.com/learn/133

基于canvas制作绚丽的倒计时效果相关推荐

  1. Canvas实现绚丽的倒计时效果(动画效果)

    HTML html很简单,引入两个文件 digit.js:存放每个数字的点阵数据 countdown.js:主要逻辑 <!DOCTYPE html> <html lang=" ...

  2. php产品效果图,jQuery_基于JQuery制作的产品广告效果,效果图.如下: 动画效果介绍 - phpStudy...

    基于JQuery制作的产品广告效果 效果图.如下: 动画效果介绍:这组广告效果是打开页面后图片会自动播放,从1-5共计5张图片,如果属标放到右下角的1.2.3.4.5列表上,可以自由进行切换到自己想看 ...

  3. 飞机大战HTML5游戏源码,基于Canvas制作的网页版飞机大战游戏+飞机大战手机端

    简介: 飞机大战HTML5游戏源码是一款基于Canvas制作的网页版飞机大战游戏,画质精美的飞机大战手机端游戏源码 网盘下载地址: http://kekewangLuo.net/W1S2LQcqAT2 ...

  4. 微信小程序动态点赞php,微信小程序小组件 基于Canvas实现直播点赞气泡效果

    这篇文章主要为大家详细介绍了微信小程序小组件,基于Canvas实现直播点赞气泡效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先发Canvas实现直播点赞气泡效果图: 实现细节: 1.JS:d ...

  5. 微信小程序动态点赞php,微信小程序小组件基于Canvas实现直播点赞气泡效果

    这篇文章主要为大家详细介绍了微信小程序小组件,基于Canvas实现直播点赞气泡效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先发Canvas实现直播点赞气泡效果图: 实现细节: 1.JS: ...

  6. 基于Rebound制造绚丽的动画效果-入门篇

    基于Rebound制造绚丽的动画效果-入门篇 Rebound是什么? Rebound是一个来自 Facebook 公司的 Java物理和动画库.Rebound spring 模型可用于创建动画,让你感 ...

  7. 利用canvas制作加速球波浪效果

    我在第一篇博客中提到运用canvas制作加速球效果,现在把整个代码分享给大家,希望对大家有帮助.(转载请标明出处) 先上效果图: 还存在一些问题: 1.想法是鼠标触碰到滑块才执行画波浪的效果,结果是直 ...

  8. html自动刷新倒计时,基于JavaScript实现自动更新倒计时效果

    实现倒计时效果需要掌握js中的两个知识点: 1.setTimeout函数 每隔1秒钟更新秒钟时间 2.Date对象 计算时间差 下面贴出 元旦倒计时代码 example.html //定义计时器,每隔 ...

  9. 基于canvas的原生JS时钟效果

    概述 运用html5新增画布canvas技术,绘制时钟效果,无需引用任何插件,纯js. 详细 代码下载:http://www.demodashi.com/demo/11935.html 给大家介绍一个 ...

最新文章

  1. linux中文麻酱字_【树】Linux笔记 1
  2. android studio离线配置gradle插件_Gradle 扫盲与 Task 基础
  3. java 10 发布_Java 10 发布之后,大多数受访者仍在使用 Java 8(82%)
  4. 如何进行高效JavaScript单元测试
  5. JQUERY的html()
  6. 《异构信息网络挖掘: 原理和方法(1)》一第2章 基于排名的聚类
  7. 【酷熊科技】工作积累 ----------- Unity3d中的Awake()、OnEnable()、Start()等默认函数的执行顺序和生命周期...
  8. eCognition易康导出样本
  9. Redis常见配置文件详解
  10. 已知二叉树的后序和中序遍历结果 求前序结果
  11. 解决SQL数据库无法附加
  12. STM32固件库官方下载地址
  13. 一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解
  14. 2021-07-15 安装less-loader依赖
  15. Gom传奇引擎的微端连不上的原因是什么?附:微端配置教程
  16. Puppeteer通过evaluate执行脚本获取cookie
  17. android自定义键盘遮挡,android中键盘遮挡了dialog里的内容怎么处理
  18. 《电路/电路原理》—戴维宁(南)定理实战演练
  19. SDNU 1040.导弹拦截【NOIP1999】【8月9】
  20. 大数据分析与应用(中级) 大数据分析平台

热门文章

  1. 终值定理与初值定理的证明推导
  2. 海思麒麟芯片处理器型号汇总(HI3559,Hi3518,hi3519,HI3516等)
  3. AE实例教程-使用AE制作图标动效
  4. Java-循环语句 控制跳转语句及方法(函数)
  5. 2023年深度学习服务器、GPU服务器配置推荐参考?(2)
  6. 2012-7-20可樂分享诗歌《Love#039;snbsp;Ph…
  7. Cassandra笔记
  8. Hadoop-IPC模型
  9. B2c购物网(一) 数据库关系图
  10. 微信H5和微信公众众号图文制作