<!DOCTYPE html>
<html>
<head>
<title>HTML5 Canvas Demo of clock</title>
<script>
function time(){
var mycanvas=document.getElementById("myCanvasTag");
var mycontext=mycanvas.getContext('2d');
//清空画布,
mycontext.clearRect(0,0,600,500)
//时钟圆圈
mycontext.beginPath();
mycontext.arc(200,200,150,0,2*Math.PI);
mycontext.stroke();
//设置参数
var myDate = new Date();
mycontext.font='10px Arial'
mycontext.fillText(myDate.toLocaleString(),20,20)
var h=myDate.getHours();
var m=myDate.getMinutes();
var s=myDate.getSeconds();
var deg = Math.PI/180;
mycontext.beginPath();
//移动旋转点
mycontext.translate(200,200)
//绘制大刻度
for(var i=0;i<12;i++){
mycontext.lineWidth=2;
mycontext.rotate(30*deg)
mycontext.moveTo(-140,0)
mycontext.lineTo(-130,0) }
mycontext.stroke()
//绘制小刻度
for(var i=0;i<60;i++){
mycontext.lineWidth=1;
mycontext.rotate(6*deg)
mycontext.moveTo(-140,0)
mycontext.lineTo(-135,0)
}
mycontext.stroke() //绘制时针
if(h>=12){h-=12}
mycontext.rotate((30*h+m/2+s/10)*deg)
mycontext.lineWidth=3;
mycontext.moveTo(0,10);
mycontext.lineTo(0,-100)
mycontext.stroke()
//绘制分针
mycontext.rotate(-(30*h+m/2+s/10)*deg)
mycontext.rotate((6*m+s/10)*deg)
mycontext.lineWidth=2;
mycontext.moveTo(0,10);
mycontext.lineTo(0,-110)
mycontext.stroke()
mycontext.rotate(-(6*m+s/10)*deg) //绘制秒针
mycontext.rotate(6*s*deg)
mycontext.lineWidth=1;
mycontext.moveTo(0,-120);
mycontext.lineTo(0,20)
mycontext.stroke()
mycontext.rotate(-6*s*deg) //初始化旋转点
mycontext.translate(-200,-200) }
setInterval(time,1000) </script>
</head>
<body>
<div style="margin-left:30px;">
<canvas id="myCanvasTag" width="500" height="500"></canvas> </div>
</body>
</html>

玩了一天多的canvas,写了个时钟玩,多有不足,望指教。

canvas写的一个小时钟demo的更多相关文章

  1. [原创]基于html5新标签canvas写的一个小画板

    最近刚学了canvas,写个小应用练习下 源代码 <!DOCTYPE> <html> <head> <meta http-equiv="Conten ...

  2. 之前为dd写的一个小的demo(robotium)

    测试类的编写: package com.m1905.dd.mobile; import com.robotium.solo.By; import com.robotium.solo.Solo; imp ...

  3. 1.类的加载机制_继承类的加载(一个小的Demo)说明

    今天我们先来一个小的Demo来了解类的加载顺序. public class ClassLoaderTest { public static void main(String[] args) { Sys ...

  4. 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~

    昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ...

  5. 用bat写的一个小病毒

    最近看了一点bat的知识,具体说是看了一个博客:http://blog.csdn.net/qsyzb/article/details/17364581 用了三天才看完=.=,感觉作者整理整理可以把博客 ...

  6. QT写的一个小工具:阿里云MQTT连接参数生成器.

    一.工具介绍. 最近在研究MQTT协议联网的一些问题,现在主流的物联网平台都支持MQTT协议. 在做阿里云平台连接测试的时候,连接参数的生成没有好用的工具, 所以就自己写了一个. 这个工具主要用于阿里 ...

  7. js 利用throw 写的一个小程序

    在下边的小程序中比较特殊的是使用isNaN()函数判断一个参数是不是数字, <!DOCTYPE html> <!DOCTYPE html> <html> <h ...

  8. python3 自己写的一个小算法(比对中文文本相似度)

    函数使用说明: 函数的三个参数分别是“匹配语句”,“匹配语料”,“相关度”: 匹配语句,和匹配预料中的语句匹配的语句,必须为字符串: 匹配语料,被匹配语句来匹配的语句列表,必须为列表: 相关度,函数只 ...

  9. canvas写的一个刮奖效果

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

随机推荐

  1. return 与 finally

    (function hello() { try { return console.log('return'); } catch (e) { } finally { console.log('final ...

  2. java Eclipse debug技巧

    摘要:调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试 ...

  3. [Mugeda HTML5技术教程之14]案例分析:制作网页游戏

    本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...

  4. windows server 2008 设置多用户同时远程登录

    >Windows server 2008默认只支持一个administrator用户登陆,一个登录后另一个就被踢掉了,有没有办法像Windows Server 2003那样允许多用户用同时同一个 ...

  5. 函数:递归是神马 - 零基础入门学习Python022

    函数:递归是神马 让编程改变世界 Change the world by program 我们这节课的主题叫递归是神马,将通过小甲鱼带感的讲解,来告诉大家神马是递归!如果说优秀的程序员是伯乐,那么把递 ...

  6. 使用Japserreport填充报表数据(3)

    E中以PDF文件的格式显示静态的中文字符串,在大多数的情况下,打印的数据来自于一些变量,在JasperReports工具中传递数据并填充到 报表只有两种方式,即使用Parameters参数和JRDat ...

  7. nodejs应用mysql(纯属翻译)

    原文点击这里 目录 Install Introduction Contributors Sponsors Community Establishing connections Connection o ...

  8. #include<iostream>与#include<iostream.h>的区别

                                           转载于祝长洋的BLOG:http://blog.sina.com.cn/s/blog_514b5f600100ayks.h ...

  9. codechef Prime Distance On Tree(树分治+FFT)

    题目链接:http://www.codechef.com/problems/PRIMEDST/ 题意:给出一棵树,边长度都是1.每次任意取出两个点(u,v),他们之间的长度为素数的概率为多大? 树分治 ...

  10. sizeof与类,继承,virtual的种种

    对虚继承层次的对象的内存布局,在不同编译器实现有所区别. 首先,说说GCC的编译器. 它实现比较简单,不管是否虚继承,GCC都是将虚表指针在整个继承关系中共享的,不共享的是指向虚基类的指针. clas ...