html做一个图片电子时钟,介绍一个用HTML5 Canvas 制作的时钟

用HTML5 Canvas 制作的时钟,看着挺简单的,但其中写起来还是有很多小的问题的,感兴趣的小伙伴们可以参考一下

362a22f93f9466176eb14b3ec44dc598.png

代码如下:

HTML5 时钟

.clocks {

height: 500px;

margin: 25px auto;

position: relative;

width: 500px;

}

HTML5 时钟

[JavaScript]代码// inner variables

var canvas, ctx;

var clockRadius = 250;

var clockImage;

// draw functions :

function clear() { // clear canvas function

ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);

}

function drawScene() { // main drawScene function

clear(); // clear canvas

// get current time

var date = new Date();

var hours = date.getHours();

var minutes = date.getMinutes();

var seconds = date.getSeconds();

hours = hours > 12 ? hours - 12 : hours;

var hour = hours minutes / 60;

var minute = minutes seconds / 60;

// save current context

ctx.save();

// draw clock image (as background)

ctx.drawImage(clockImage, 0, 0, 500, 500);

ctx.translate(canvas.width / 2, canvas.height / 2);

ctx.beginPath();

// draw numbers

ctx.font = '36px Arial';

ctx.fillStyle = '#000';

ctx.textAlign = 'center';

ctx.textBaseline = 'middle';

for (var n = 1; n <= 12; n ) {

var theta = (n - 3) * (Math.PI * 2) / 12;

var x = clockRadius * 0.7 * Math.cos(theta);

var y = clockRadius * 0.7 * Math.sin(theta);

ctx.fillText(n, x, y);

}

// draw hour

ctx.save();

var theta = (hour - 3) * 2 * Math.PI / 12;

ctx.rotate(theta);

ctx.beginPath();

ctx.moveTo(-15, -5);

ctx.lineTo(-15, 5);

ctx.lineTo(clockRadius * 0.5, 1);

ctx.lineTo(clockRadius * 0.5, -1);

ctx.fill();

ctx.restore();

// draw minute

ctx.save();

var theta = (minute - 15) * 2 * Math.PI / 60;

ctx.rotate(theta);

ctx.beginPath();

ctx.moveTo(-15, -4);

ctx.lineTo(-15, 4);

ctx.lineTo(clockRadius * 0.8, 1);

ctx.lineTo(clockRadius * 0.8, -1);

ctx.fill();

ctx.restore();

// draw second

ctx.save();

var theta = (seconds - 15) * 2 * Math.PI / 60;

ctx.rotate(theta);

ctx.beginPath();

ctx.moveTo(-15, -3);

ctx.lineTo(-15, 3);

ctx.lineTo(clockRadius * 0.9, 1);

ctx.lineTo(clockRadius * 0.9, -1);

ctx.fillStyle = '#0f0';

ctx.fill();

ctx.restore();

ctx.restore();

}

// initialization

$(function(){

canvas = document.getElementById('canvas');

ctx = canvas.getContext('2d');

// var width = canvas.width;

// var height = canvas.height;

clockImage = new Image();

clockImage.src = 'http://static.oschina.net/uploads/space/2012/0712/125855_nnla_89964.png';

setInterval(drawScene, 1000); // loop drawScene

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生科技制作项目(含原理图、PCB、源代码、Proteus仿真文件、功能说明) 使用说明: 1. 功能按键说明: S1为功能选择按键,S2为功能扩展按键,S3为数值加一按键。 2. 功能及操作说明: 操作时,连续短时间(小于1秒)按动S1,即可在以上的6个功能中连续循环。中途如果长按(大于2秒)S1,则立回到时钟功能的状态, 1, 时钟功能:上电后及显示10:10:00,寓意十全十美。 2, 校时功能:短按一次S1,即当前时间和冒号为闪烁状态,按动S2则小时位加1,按动S3则分钟位加1,秒表不可调。 3, 闹钟功能:短按二次S1,显示状态为22:10:00.冒号为长亮。按动S2刚小时位加1,按动S3则分钟位加1,秒时不可调。当按动小时位超过23时则会显示--:--:--,这个表示关闭闹钟功能。闹钟声为蜂鸣器长鸣3秒钟。 4, 倒计时功能:短按三次S1,显示状态为0.冒号为长灭。按动S2则从低位依次显示高位,按动S3则相应位加1,当S2按到第6次时会是所设定的时间状态下开始倒计时,再次按动S2将再次进入调整功能,并且停止倒计时。 5, 秒表功能:短按四次S1,显示状态为00:00:00.冒号为长亮。按动S2则开始秒表计时,再次按动S2则停止计时,当停止计时的时候按动S3则秒表清零。 6, 计数器功能:短按五次S1,显示状态为00:00:00。冒号为长灭,按动S2则计数器加1.按动S3则计数器清零。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值