博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[js高手之路] html5 canvas教程 - 制作一个数码倒计时效果
阅读量:6245 次
发布时间:2019-06-22

本文共 7198 字,大约阅读时间需要 23 分钟。

效果图:

这个实例主要注意:

1,剩余时间的计算

2,每个时间数字的绘制

时间主要有0-9和一个冒号组成,用数组来表示( 0: 就是不画圆,1:就是画一个蓝色的圆 )

num.js文件:

1 var digital =  2 [  3     [  4         [0,0,1,1,1,0,0],  5         [0,1,1,0,1,1,0],  6         [1,1,0,0,0,1,1],  7         [1,1,0,0,0,1,1],  8         [1,1,0,0,0,1,1],  9         [1,1,0,0,0,1,1], 10         [1,1,0,0,0,1,1], 11         [1,1,0,0,0,1,1], 12         [0,1,1,0,1,1,0], 13         [0,0,1,1,1,0,0] 14     ],//0 15     [ 16         [0,0,0,1,1,0,0], 17         [0,1,1,1,1,0,0], 18         [0,0,0,1,1,0,0], 19         [0,0,0,1,1,0,0], 20         [0,0,0,1,1,0,0], 21         [0,0,0,1,1,0,0], 22         [0,0,0,1,1,0,0], 23         [0,0,0,1,1,0,0], 24         [0,0,0,1,1,0,0], 25         [1,1,1,1,1,1,1] 26     ],//1 27     [ 28         [0,1,1,1,1,1,0], 29         [1,1,0,0,0,1,1], 30         [0,0,0,0,0,1,1], 31         [0,0,0,0,1,1,0], 32         [0,0,0,1,1,0,0], 33         [0,0,1,1,0,0,0], 34         [0,1,1,0,0,0,0], 35         [1,1,0,0,0,0,0], 36         [1,1,0,0,0,1,1], 37         [1,1,1,1,1,1,1] 38     ],//2 39     [ 40         [1,1,1,1,1,1,1], 41         [0,0,0,0,0,1,1], 42         [0,0,0,0,1,1,0], 43         [0,0,0,1,1,0,0], 44         [0,0,1,1,1,0,0], 45         [0,0,0,0,1,1,0], 46         [0,0,0,0,0,1,1], 47         [0,0,0,0,0,1,1], 48         [1,1,0,0,0,1,1], 49         [0,1,1,1,1,1,0] 50     ],//3 51     [ 52         [0,0,0,0,1,1,0], 53         [0,0,0,1,1,1,0], 54         [0,0,1,1,1,1,0], 55         [0,1,1,0,1,1,0], 56         [1,1,0,0,1,1,0], 57         [1,1,1,1,1,1,1], 58         [0,0,0,0,1,1,0], 59         [0,0,0,0,1,1,0], 60         [0,0,0,0,1,1,0], 61         [0,0,0,1,1,1,1] 62     ],//4 63     [ 64         [1,1,1,1,1,1,1], 65         [1,1,0,0,0,0,0], 66         [1,1,0,0,0,0,0], 67         [1,1,1,1,1,1,0], 68         [0,0,0,0,0,1,1], 69         [0,0,0,0,0,1,1], 70         [0,0,0,0,0,1,1], 71         [0,0,0,0,0,1,1], 72         [1,1,0,0,0,1,1], 73         [0,1,1,1,1,1,0] 74     ],//5 75     [ 76         [0,0,0,0,1,1,0], 77         [0,0,1,1,0,0,0], 78         [0,1,1,0,0,0,0], 79         [1,1,0,0,0,0,0], 80         [1,1,0,1,1,1,0], 81         [1,1,0,0,0,1,1], 82         [1,1,0,0,0,1,1], 83         [1,1,0,0,0,1,1], 84         [1,1,0,0,0,1,1], 85         [0,1,1,1,1,1,0] 86     ],//6 87     [ 88         [1,1,1,1,1,1,1], 89         [1,1,0,0,0,1,1], 90         [0,0,0,0,1,1,0], 91         [0,0,0,0,1,1,0], 92         [0,0,0,1,1,0,0], 93         [0,0,0,1,1,0,0], 94         [0,0,1,1,0,0,0], 95         [0,0,1,1,0,0,0], 96         [0,0,1,1,0,0,0], 97         [0,0,1,1,0,0,0] 98     ],//7 99     [100         [0,1,1,1,1,1,0],101         [1,1,0,0,0,1,1],102         [1,1,0,0,0,1,1],103         [1,1,0,0,0,1,1],104         [0,1,1,1,1,1,0],105         [1,1,0,0,0,1,1],106         [1,1,0,0,0,1,1],107         [1,1,0,0,0,1,1],108         [1,1,0,0,0,1,1],109         [0,1,1,1,1,1,0]110     ],//8111     [112         [0,1,1,1,1,1,0],113         [1,1,0,0,0,1,1],114         [1,1,0,0,0,1,1],115         [1,1,0,0,0,1,1],116         [0,1,1,1,0,1,1],117         [0,0,0,0,0,1,1],118         [0,0,0,0,0,1,1],119         [0,0,0,0,1,1,0],120         [0,0,0,1,1,0,0],121         [0,1,1,0,0,0,0]122     ],//9123     [124         [0,0,0,0],125         [0,0,0,0],126         [0,1,1,0],127         [0,1,1,0],128         [0,0,0,0],129         [0,0,0,0],130         [0,1,1,0],131         [0,1,1,0],132         [0,0,0,0],133         [0,0,0,0]134     ]//:135 ];
View Code

 

倒计时实现:

1  2     
3 8 9 64 65 66
67

 

<head> <meta charset='utf-8' /> <style> #canvas { border: 1px dashed #aaa; } </style> <script> var digital = [ [ [0,0,1,1,1,0,0], [0,1,1,0,1,1,0], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [0,1,1,0,1,1,0], [0,0,1,1,1,0,0] ],//0 [ [0,0,0,1,1,0,0], [0,1,1,1,1,0,0], [0,0,0,1,1,0,0], [0,0,0,1,1,0,0], [0,0,0,1,1,0,0], [0,0,0,1,1,0,0], [0,0,0,1,1,0,0], [0,0,0,1,1,0,0], [0,0,0,1,1,0,0], [1,1,1,1,1,1,1] ],//1 [ [0,1,1,1,1,1,0], [1,1,0,0,0,1,1], [0,0,0,0,0,1,1], [0,0,0,0,1,1,0], [0,0,0,1,1,0,0], [0,0,1,1,0,0,0], [0,1,1,0,0,0,0], [1,1,0,0,0,0,0], [1,1,0,0,0,1,1], [1,1,1,1,1,1,1] ],//2 [ [1,1,1,1,1,1,1], [0,0,0,0,0,1,1], [0,0,0,0,1,1,0], [0,0,0,1,1,0,0], [0,0,1,1,1,0,0], [0,0,0,0,1,1,0], [0,0,0,0,0,1,1], [0,0,0,0,0,1,1], [1,1,0,0,0,1,1], [0,1,1,1,1,1,0] ],//3 [ [0,0,0,0,1,1,0], [0,0,0,1,1,1,0], [0,0,1,1,1,1,0], [0,1,1,0,1,1,0], [1,1,0,0,1,1,0], [1,1,1,1,1,1,1], [0,0,0,0,1,1,0], [0,0,0,0,1,1,0], [0,0,0,0,1,1,0], [0,0,0,1,1,1,1] ],//4 [ [1,1,1,1,1,1,1], [1,1,0,0,0,0,0], [1,1,0,0,0,0,0], [1,1,1,1,1,1,0], [0,0,0,0,0,1,1], [0,0,0,0,0,1,1], [0,0,0,0,0,1,1], [0,0,0,0,0,1,1], [1,1,0,0,0,1,1], [0,1,1,1,1,1,0] ],//5 [ [0,0,0,0,1,1,0], [0,0,1,1,0,0,0], [0,1,1,0,0,0,0], [1,1,0,0,0,0,0], [1,1,0,1,1,1,0], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [0,1,1,1,1,1,0] ],//6 [ [1,1,1,1,1,1,1], [1,1,0,0,0,1,1], [0,0,0,0,1,1,0], [0,0,0,0,1,1,0], [0,0,0,1,1,0,0], [0,0,0,1,1,0,0], [0,0,1,1,0,0,0], [0,0,1,1,0,0,0], [0,0,1,1,0,0,0], [0,0,1,1,0,0,0] ],//7 [ [0,1,1,1,1,1,0], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [0,1,1,1,1,1,0], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [0,1,1,1,1,1,0] ],//8 [ [0,1,1,1,1,1,0], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [0,1,1,1,0,1,1], [0,0,0,0,0,1,1], [0,0,0,0,0,1,1], [0,0,0,0,1,1,0], [0,0,0,1,1,0,0], [0,1,1,0,0,0,0] ],//9 [ [0,0,0,0], [0,0,0,0], [0,1,1,0], [0,1,1,0], [0,0,0,0], [0,0,0,0], [0,1,1,0], [0,1,1,0], [0,0,0,0], [0,0,0,0] ]//: ]; </script> <script> window.onload = function () { var oCanvas = document.querySelector("#canvas"), oGc = oCanvas.getContext('2d'), width = oCanvas.width, height = oCanvas.height, radius = 10, leftTime = 0, endTime = new Date( 2017, 09, 10, 15, 30, 02 ); leftTime = getLeftTime(); showTime( oGc ); setInterval(function(){ oGc.clearRect( 0, 0, width, height ); leftTime = getLeftTime(); showTime( oGc ); }, 1000); function showTime( cxt ){ var hour = parseInt( leftTime / 3600 ); var min = parseInt( ( leftTime - hour * 3600 ) / 60 ); var sec = leftTime % 60; showNum( 0, 0, parseInt( hour / 10 ), cxt ); showNum( 15 * ( radius + 1 ), 0, parseInt( hour % 10 ), cxt ); showNum( 30 * ( radius + 1 ), 0, 10, cxt ); showNum( 39 * ( radius + 1 ), 0, parseInt( min / 10 ), cxt ); showNum( 54 * ( radius + 1 ), 0, parseInt( min % 10 ), cxt ); showNum( 69 * ( radius + 1 ), 0, 10, cxt ); showNum( 78 * ( radius + 1 ), 0, parseInt( sec / 10 ), cxt ); showNum( 93 * ( radius + 1 ), 0, parseInt( sec % 10 ), cxt ); } function getLeftTime(){ var curTime = new Date(); var restTime = endTime.getTime() - curTime.getTime(); restTime = Math.round( restTime / 1000 ); return restTime > 0 ? restTime : 0; } //显示时间的每一位 function showNum( x, y, num, cxt ){ cxt.fillStyle = '#09f'; for( var i = 0; i < digital[num].length; i++ ){ for( var j = 0; j < digital[num][i].length; j++ ){ if ( digital[num][i][j] == 1 ){ cxt.beginPath(); cxt.arc( x + j * 2 * ( radius + 1 ) + ( radius + 1 ), y + i * 2 * ( radius + 1 ) + ( radius + 1 ), radius, 0, + 360 * Math.PI / 180, false ); cxt.closePath(); cxt.fill(); } } } } } </script> </head> <body> <canvas id="canvas" width="1200" height="300"></canvas> </body>
run code
这里要注意一下,如果当前时间超过2017年10月10日15:30:02分就没有效果了,你需要把这个剩余时间设置比你当前的时间大几天就可以了
 
 

转载地址:http://cooia.baihongyu.com/

你可能感兴趣的文章
2019中国爱分析数据智能高峰论坛(北京)
查看>>
oracle数据库安装的注意事项
查看>>
【总结整理】微信7年起起伏伏的理解
查看>>
Javascript多线程引擎(九)
查看>>
Handler和AsyncTask
查看>>
Microbit Turnipbit 孩子也能做的声光控开关
查看>>
通过SHELL并发获下载数据
查看>>
web安全之SQL注入---第三章 如何寻找sql注入?
查看>>
JAVA通过继承Thread来创建线程
查看>>
C#控制台"*"绘制空心菱形
查看>>
Android中JNI编程详解
查看>>
演练Ext JS 4.2自定义主题
查看>>
【tensorflow】1.安装Tensorflow开发环境,安装Python 的IDE--PyCharm
查看>>
【maven】 pom.xml详解
查看>>
LINQ中的OrderBy实现多字段升序、降序排序实现
查看>>
idea14导入eclipse项目并部署运行完整步骤
查看>>
杀死O2O的三大杀手?!
查看>>
<Android 应用 之路> 百度地图API使用(1)
查看>>
Java的结构之美【1】——构造对象
查看>>
Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效
查看>>