canvas 画时钟 会动呦
//半径
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 画时钟 会动呦的更多相关文章
- canvas画时钟
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- canvas画时钟,重拾乐趣!
canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...
- html5学习(一)--canvas画时钟
利用空余时间学习一下html5. <!doctype html> <html> <head></head> <body> <canva ...
- 用canvas画时钟
效果图在博客首页上. html: <canvas id="canvas" >Your browser does not support canvas</canva ...
- 用canvas画“哆啦A梦”时钟
前言:今天看完了Js书的canvas画布那张,好开心~又是心爱的canvas~欧耶~ 之前看到有人建议我画蓝胖子,对哦,我怎么把童年最喜欢的蓝胖子忘了,为了表达我对蓝胖子的歉意,所以今天画了会动的he ...
- 深夜,用canvas画一个时钟
深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...
- 简单酷炫的Canvas数字时钟
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 我记得很早之前就看过这个DEMO,是岑安大大博客里看到的: 就是这个数字时钟,当时觉得这个创意不错,但是也没去折腾.直到昨天同事又在网上看 ...
- 用canvas绘制时钟
用canvas做时钟其实很简单,下面是我做出的效果: 是不是还挺漂亮的? 下面上代码: html <div class="whole"> <canvas id=& ...
- [JS,Canvas]日历时钟
[JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...
随机推荐
- [转]kaldi 神经网络
转自:http://blog.csdn.net/xmdxcsj/article/details/54695506 overview type author CPU/GPU feature nnet1 ...
- 【高速接口-RapidIO】3、RapidIO串行物理层的包传输过程
一.引言 前几篇文章已经谈到RapidIO的协议,串行物理层与控制符号. RapidIO协议包括读事务(NREAD),写事务(NWRITE),流写事务(SWRITE),有响应的写事务(NWRITE_R ...
- JAVA编程思想的理解
1)POP--面向过程编程(Process-oriented programming ): 面向过程编程是以功能为中心来进行思考和组织的一种编程方法,它强调的是系统的数据被加工和处理的过程,在程序 ...
- Android开发之如何避免ANR(Keeping Your App Responsive)
一:什么是ANR 如果应用程序不能响应用户的输入了,那么就可以说应用ANR了. 如果需要运行一个耗时较长的操作的时候,不要把这个任务放在UI线程上运行,而是单独创建一个线程运行那些操作. 以下情况会出 ...
- 吴恩达机器学习笔记33-评估一个假设输出(Evaluating a Hypothesis Outpute)
当我们确定学习算法的参数的时候,我们考虑的是选择参量来使训练误差最小化,有人认为得到一个非常小的训练误差一定是一件好事,但我们已经知道,仅仅是因为这个假设具有很小的训练误差,并不能说明它就一定是一个好 ...
- Kali学习笔记8:四层发现
1.基于TCP协议 优点: 1.可路由且结果可靠 2.不太可能会被防火墙过滤 3.甚至可以发现端口 缺点: 速度较慢(三次握手) 利用Scapy发送ACK数据包: 配置数据包: 发送数据包: 看一下收 ...
- iTerm2 使用笔记
iTerm2 使用了1年多了,一些功能其实还没有主动去发现,这次接着项目忙完的空闲时间整理一下tips,提高工作效率,方便以后查阅. 一.几个术语 从小到大:session > pane > ...
- 涨姿势:Spring Boot 2.x 启动全过程源码分析
目录 SpringApplication 实例 run 方法运行过程 总结 上篇<Spring Boot 2.x 启动全过程源码分析(一)入口类剖析>我们分析了 Spring Boot 入 ...
- [转]MySQL 清空慢查询文件
概述 本章主要写当慢查询文件很大的时候怎样在线生成一个新的慢查询文件. 测试环境:mysql 5.6.21 步骤 配置慢查询 默认的my.cnf文件在/etc/目录下 vim /etc/my.cnf ...
- MemcachedUI-一款基于.NET MVC编写的Memcached监控软件
一.起源 服务器上使用了Memcached做缓存加速,但是想查看Memcached状态的时候都只能telnet 127.0.0.1 11211 这样来查看,甚是累人,就想能不能做一款web端的软件,方 ...