canvas 画时钟 会动呦

时间:2022-09-21 09:14:03
 //半径
var r = 130;
//重置原点
ctx.save();
ctx.translate(400, 500); //使用translate重置原点
function drawClock() { //画时钟不动的背景
//时钟外圈
ctx.beginPath();
ctx.arc(0, 0, r, 0, 2*Math.PI);
ctx.strokeStyle = 'blue';
ctx.lineWidth = 5;
ctx.stroke();
ctx.closePath(); //圆心
ctx.beginPath();
ctx.arc(0,0,5,0, 2*Math.PI);
ctx.fillStyle = 'black';
ctx.lineWidth = 1;
ctx.fill();
ctx.closePath(); //画hour数字
var hour = [1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
hour.forEach(function (value) {
var xValue = (r-28)*Math.cos(Math.PI*(value-3)/6);
var yValue = (r-28)*Math.sin(Math.PI*(value-3)/6);
ctx.font = "18px sans-serif";
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.fillStyle = 'black';
ctx.fillText(value, xValue, yValue);
});
//画刻度
for (var i=0; i<60; i++) {
ctx.beginPath();
var x = (r - 15)*Math.cos(i*2*Math.PI/60);
var y = (r - 15)*Math.sin(i*2*Math.PI/60);
if (i%5 === 0) {
ctx.strokeStyle = "#000";
ctx.arc(x, y, 2, 0, 2*Math.PI, true);
} else {
ctx.strokeStyle = "#bbb";
ctx.arc(x, y, 2, 0, 2*Math.PI, true);
}
ctx.stroke();
ctx.closePath();
}
} function moveClock() { //画会动的指针
let now = new Date();
let h = now.getHours();
ctx.save();
ctx.beginPath();
ctx.rotate(h*Math.PI/6);
ctx.moveTo(0,10);
ctx.lineTo(0, 55-r);
ctx.strokeStyle = 'blue';
ctx.lineWidth = 8;
ctx.lineCap = 'round';
ctx.stroke();
ctx.closePath();
ctx.restore(); //分针
var min = now.getMinutes();
ctx.save();
ctx.beginPath();
ctx.rotate(min*Math.PI/30);
ctx.moveTo(0,10);
ctx.lineTo(0, 40-r);
ctx.strokeStyle = 'green';
ctx.lineWidth = 8;
ctx.lineCap = 'round';
ctx.stroke();
ctx.closePath();
ctx.restore(); //s针
var s = now.getSeconds();
ctx.save();
ctx.beginPath();
ctx.rotate(s*Math.PI/30);
ctx.moveTo(0,10);
ctx.lineTo(0, 30-r);
ctx.strokeStyle = 'red';
ctx.lineWidth = 3;
ctx.lineCap = 'round';
ctx.stroke();
ctx.closePath();
ctx.restore();
} setInterval(function () { //隔一秒调用一次上面两个方法,调用之前先清除画板,否则会有很多指针。
ctx.clearRect(-130,-130, 260, 260);
drawClock();
moveClock();
}, 1000);

canvas 画时钟 会动呦的更多相关文章

  1. canvas画时钟

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  2. canvas画时钟,重拾乐趣&excl;

    canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...

  3. html5学习&lpar;一&rpar;--canvas画时钟

    利用空余时间学习一下html5. <!doctype html> <html> <head></head> <body> <canva ...

  4. 用canvas画时钟

    效果图在博客首页上. html: <canvas id="canvas" >Your browser does not support canvas</canva ...

  5. 用canvas画&OpenCurlyDoubleQuote;哆啦A梦”时钟

    前言:今天看完了Js书的canvas画布那张,好开心~又是心爱的canvas~欧耶~ 之前看到有人建议我画蓝胖子,对哦,我怎么把童年最喜欢的蓝胖子忘了,为了表达我对蓝胖子的歉意,所以今天画了会动的he ...

  6. 深夜,用canvas画一个时钟

    深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...

  7. 简单酷炫的Canvas数字时钟

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 我记得很早之前就看过这个DEMO,是岑安大大博客里看到的: 就是这个数字时钟,当时觉得这个创意不错,但是也没去折腾.直到昨天同事又在网上看 ...

  8. 用canvas绘制时钟

    用canvas做时钟其实很简单,下面是我做出的效果: 是不是还挺漂亮的? 下面上代码: html <div class="whole"> <canvas id=& ...

  9. &lbrack;JS&comma;Canvas&rsqb;日历时钟

    [JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...

随机推荐

  1. L2 Population 原理 - 每天5分钟玩转 OpenStack(113)

    前面我们学习了 VXLAN,今天讨论跟 VXLAN 紧密相关的 L2 Population. L2 Population 是用来提高 VXLAN 网络 Scalability 的. 通常我们说某个系统 ...

  2. BZOJ3236&colon; &lbrack;Ahoi2013&rsqb;作业

    Description Input Output Sample Input 3 4 1 2 2 1 2 1 3 1 2 1 1 1 3 1 3 2 3 2 3 Sample Output 2 2 1 ...

  3. 利用Chrome模拟访问移动端网页

    很多网站都通过User-Agent来判断浏览器类型,如果是3G手机,显示手机页面内容,如果是普通浏览器,显示普通网页内容. 谷歌Chrome浏览器,可以很方便地用来当3G手机模拟器.在Windows的 ...

  4. &lbrace;&rcub;&plus;&lbrack;&rsqb; &equals; &quest; 和 &lbrack;&rsqb;&plus;&lbrace;&rcub; &equals; &quest; 浅谈JS数据类型转换

    参加公司技术嘉年华第一季(前端.服务端)的间隙,陈导问了我一个问题:{}+[] 和 []+{}两个表达式的值分别是什么?根据我的理解我觉得结果应该都是"[object Object]&quo ...

  5. Angular 2&period;0 从0到1 (五)

    第一节:Angular 2.0 从0到1 (一)第二节:Angular 2.0 从0到1 (二)第三节:Angular 2.0 从0到1 (三)第四节:Angular 2.0 从0到1 (四)第五节: ...

  6. JIRA搭建

    请参考下面的文章 http://www.linuxidc.com/Linux/2014-09/106995.htm 所需下载的文件 链接: http://pan.baidu.com/s/1c0wad3 ...

  7. linux查看硬件详细信息dmidecode

    [root@zabbix_server src]# dmidecode|more # dmidecode 2.12 SMBIOS 2.7 present. structures occupying b ...

  8. activiti Task

    UserTask ScriptTask ServiceTask MailTask ManualTask ReceiveTask BusinessRuleTask callActivity

  9. mysql数据类型与运算符

    一.数据类型 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediu ...

  10. 怎样用Eclipse将Java源代码生成可执行文件&lbrack;转&rsqb;

    eclipse将java源代码生成jar可执行文件 用eclipse做了一个web项目的自动化测试,自己用的时候倒是很方便,打开eclipse直接运行即可,但是分享给其他小伙伴用的时候就不太方便,希望 ...