时钟倒计时

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">


<head>

<title> new document </title>

<meta name="generator" content="editplus" />

<meta name="author" content="" />

<meta name="keywords" content="" />

<meta name="description" content="" />

</head>

<style type="text/css">

html,

body {

height: 100%

}

</style>


<body>

<canvas id="canvas" style="height:100%">

  当前浏览器不支持Canvas

  </canvas>


<script type="text/javascript">

digit = [

[

[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]

] //:

];

var WINDOW_WIDTH = 1024;

var WINDOW_HEIGHT = 600;

var MARGIN_TOP = 60;

var MARGIN_LEFT = 30;

//存放彩色小球

var balls = [];


const colors = ["#33B5E5", "#0099CC", "#AA66CC", "#669900", "#FFBB33", "#FF8800", "#FF4444", "CC0000"];

var r = 8; //圆半径

window.onload = function() {

WINDOW_WIDTH = document.body.clientWidth;

WINDOW_HEIGHT = document.body.clientHeight;

MARGIN_LEFT = Math.round(WINDOW_WIDTH / 10);

r = Math.round(WINDOW_WIDTH * 4 / 5 / 108) - 1;

var canvas = document.getElementById("canvas");

var context = canvas.getContext("2d");

canvas.width = WINDOW_WIDTH;

canvas.height = WINDOW_HEIGHT;


window.setInterval(function() {

var curr = new Date();

var curHours = curr.getHours();

var curMinutes = curr.getMinutes();

var curSeconds = curr.getSeconds();


//当时间的秒数改变时添加彩色小球

if(preSeconds != curSeconds) {


if(parseInt(curHours / 10) != parseInt(preHours / 10)) {

addBall(MARGIN_LEFT, MARGIN_TOP, parseInt(curHours / 10));

}

if(parseInt(curHours % 10) != parseInt(preHours % 10)) {

addBall(MARGIN_LEFT + 15 * (r + 1), MARGIN_TOP, parseInt(curHours % 10));

}

if(parseInt(curMinutes / 10) != parseInt(preMinutes / 10)) {

addBall(MARGIN_LEFT + 39 * (r + 1), MARGIN_TOP, parseInt(curMinutes / 10));

}

if(parseInt(curMinutes % 10) != parseInt(preMinutes % 10)) {

addBall(MARGIN_LEFT + 54 * (r + 1), MARGIN_TOP, parseInt(curMinutes % 10));

}


if(parseInt(curSeconds / 10) != parseInt(preSeconds / 10)) {

addBall(MARGIN_LEFT + 78 * (r + 1), MARGIN_TOP, parseInt(curSeconds / 10));

}

if(parseInt(curSeconds % 10) != parseInt(preSeconds % 10)) {

addBall(MARGIN_LEFT + 93 * (r + 1), MARGIN_TOP, parseInt(curSeconds % 10));

}

}

render(context);


}, 50);


}


//添加小球(数字num上的彩色小球,x,y:数字方块容器的左上角顶点坐标)

function addBall(x, y, num) {

for(var i = 0; i < digit[num].length; i++) {

for(var j = 0; j < digit[num][i].length; j++) {

if(digit[num][i][j] == 1) {


var ball = {

x: x + j * 2 * (r + 1) + r + 1,

y: y + i * 2 * (r + 1) + r + 1,

g: 1.5 + Math.random(),

vx: Math.pow(-1, Math.ceil(Math.random() * 1000)) * 9, //结果为-10/10

vy: -10,

color: colors[Math.floor(Math.random() * colors.length)]

};

balls.push(ball);


}

}

}

}

//----画彩色小球

function renderBalls(context) {

//context.clearRect(0,0,WINDOW_WIDTH,WINDOW_HEIGHT)

for(var i = 0; i < balls.length; i++) {

context.beginPath();

context.arc(balls[i].x, balls[i].y, r, 0, 2 * Math.PI, false);

context.fillStyle = balls[i].color;

context.fill();

context.closePath();

}

}


//----更新彩色小球位置

function UpdateBalls() {

var count = 0;

for(var i = 0; i < balls.length; i++) {

balls[i].x += balls[i].vx;

balls[i].y += balls[i].vy;

balls[i].vy += balls[i].g;

if(balls[i].y + r >= WINDOW_HEIGHT) {

balls[i].y = WINDOW_HEIGHT - r;

balls[i].vy = -balls[i].vy * 0.7;

}


if(balls[i].x + r > 0 && balls[i].x - r < WINDOW_WIDTH) {

balls[count++] = balls[i];

}


}

//移除溢出的小球

while(balls.length > count) {

balls.pop();

}

}


var preHours;

var preMinutes;

var preSeconds;


//渲染整个画布

function render(context) {

context.clearRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT)

var now = new Date();

var hours = now.getHours();

var minutes = now.getMinutes();

var seconds = now.getSeconds();

preHours = hours;

preMinutes = minutes;

preSeconds = seconds;

//---时

renderDigit(MARGIN_LEFT, MARGIN_TOP, parseInt(hours / 10), context);

renderDigit(MARGIN_LEFT + 15 * (r + 1), MARGIN_TOP, hours % 10, context);

renderDigit(MARGIN_LEFT + 30 * (r + 1), MARGIN_TOP, 10, context);

//---分

renderDigit(MARGIN_LEFT + 39 * (r + 1), MARGIN_TOP, parseInt(minutes / 10), context);

renderDigit(MARGIN_LEFT + 54 * (r + 1), MARGIN_TOP, minutes % 10, context);

renderDigit(MARGIN_LEFT + 69 * (r + 1), MARGIN_TOP, 10, context);

//---秒

renderDigit(MARGIN_LEFT + 78 * (r + 1), MARGIN_TOP, parseInt(seconds / 10), context);

renderDigit(MARGIN_LEFT + 93 * (r + 1), MARGIN_TOP, seconds % 10, context);

//---画小球

renderBalls(context);

//---改变小球路径

UpdateBalls();


console.log(balls.length);


}

//渲染每个数字

function renderDigit(x, y, num, context) {

context.fillStyle = "green";

for(var i = 0; i < digit[num].length; i++) {

for(var j = 0; j < digit[num][i].length; j++) {

if(digit[num][i][j] == 1) {

context.beginPath();

context.arc(x + j * 2 * (r + 1) + r + 1, y + i * 2 * (r + 1) + r + 1, r, 0, 2 * Math.PI, false);

context.closePath();

context.fill();

}

}

}

}

</script>

</body>


</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值