首页 > 代码库 > HTM5制作的闹钟
HTM5制作的闹钟
HTML5出来很久了一直没好好研究过,今天找视频看了,研究了一下,制作了一个闹钟。
效果图如下
<div> <canvas id="Clock" width="500" height="500">your broswer can not see the clock </canvas> <script> var clock = document.getElementById("Clock"); var cxt = clock.getContext("2d"); function DrawClock() { //clear canvas //要先清空画布,才能保持画面的动画效果 cxt.clearRect(0, 0, 500, 500); cxt.font = "20px Blackadder ITC"; cxt.fillText("My clock", 220, 150); cxt.font = "14px Blackadder ITC"; cxt.fillText("---Made by Lan", 240, 170); var image = new Image(); image.src = "1.png"; cxt.drawImage(image, 220, 280, 100, 100); var now = new Date(); var sec = now.getSeconds(); var min = now.getMinutes(); var hour = now.getHours(); // must be hour+ min/60 hour = hour + min / 60; hour = hour > 12 ? hour - 12 : hour; //round, scale, niddle cxt.beginPath(); cxt.arc(250, 250, 200, 0, 360, false); cxt.strokeStyle = "#ABCDEF"; cxt.lineWidth = 9; cxt.stroke(); cxt.closePath(); //scale 刻度,时刻 cxt.font = "30px Bold"; for (var i = 0; i < 12; i++) { cxt.save(); cxt.lineWidth = 7; cxt.strokeStyle = "Black"; cxt.translate(250, 250); cxt.rotate(i * 30 * Math.PI / 180); cxt.beginPath(); cxt.moveTo(0, -170); cxt.lineTo(0, -190); if (i == 0) { cxt.fillText("12", -10, -145); } else { cxt.fillText(i.toString(), -10, -145); } cxt.stroke(); cxt.closePath(); cxt.restore(); }
// 分 for (var j = 0; j < 60; j++) { cxt.save(); cxt.lineWidth = 4; cxt.translate(250, 250); cxt.rotate(j * 6 * Math.PI / 180); cxt.beginPath(); cxt.moveTo(0, -180); cxt.lineTo(0, -190); cxt.strokeStyle = "Black"; cxt.stroke(); cxt.closePath(); cxt.restore(); } cxt.beginPath(); cxt.save(); cxt.lineWidth = 7; cxt.strokeStyle = "Black"; cxt.translate(250, 250); cxt.rotate(hour * 30 * Math.PI / 180); cxt.moveTo(0, -150); cxt.lineTo(0, 10); cxt.stroke(); cxt.restore(); cxt.closePath(); cxt.beginPath(); cxt.save(); cxt.lineWidth = 5; cxt.strokeStyle = "Black"; cxt.translate(250, 250); cxt.rotate(min * 6 * Math.PI / 180); cxt.moveTo(0, -130); cxt.lineTo(0, 10); cxt.stroke(); cxt.restore(); cxt.closePath(); cxt.beginPath(); cxt.save(); cxt.lineWidth = 3; cxt.strokeStyle = "red"; cxt.fillStyle = "Black"; cxt.translate(250, 250); cxt.rotate(sec * 6 * Math.PI / 180);//秒 cxt.moveTo(0, 150); cxt.lineTo(0, -15); cxt.stroke(); cxt.beginPath(); cxt.arc(0, 0, 5, 0, 360, false); cxt.fillStyle = "gray"; cxt.strokeStyle = "red"; cxt.fill(); cxt.closePath(); cxt.beginPath(); cxt.arc(0, 130, 5, 0, 360, false); cxt.fillStyle = "black"; cxt.strokeStyle = "red"; cxt.fill(); cxt.stroke(); cxt.restore(); cxt.closePath(); } DrawClock(); setInterval(DrawClock, 1000); </script> </div>
需要注意的几个常见的方法
<script type="text/javascript">// 12 ? hour - 12 : hour;
//round, scale, niddle
cxt.beginPath();
cxt.arc(250, 250, 200, 0, 360, false);
cxt.strokeStyle = "#ABCDEF";
cxt.lineWidth = 9;
cxt.stroke();
cxt.closePath();
//scale
cxt.font = "30px Bold";
for (var i = 0; i < 12; i++) {
cxt.save();
cxt.lineWidth = 7;
cxt.strokeStyle = "Black";
cxt.translate(250, 250);
cxt.rotate(i * 30 * Math.PI / 180);
cxt.beginPath();
cxt.moveTo(0, -170);
cxt.lineTo(0, -190);
if (i == 0) {
cxt.fillText("12", -10, -145);
}
else {
cxt.fillText(i.toString(), -10, -145);
}
cxt.stroke();
cxt.closePath();
cxt.restore();
}
for (var j = 0; j < 60; j++) {
cxt.save();
cxt.lineWidth = 4;
cxt.translate(250, 250);
cxt.rotate(j * 6 * Math.PI / 180);
cxt.beginPath();
cxt.moveTo(0, -180);
cxt.lineTo(0, -190);
cxt.strokeStyle = "Black";
cxt.stroke();
cxt.closePath();
cxt.restore();
}
cxt.beginPath();
cxt.save();
cxt.lineWidth = 7;
cxt.strokeStyle = "Black";
cxt.translate(250, 250);
cxt.rotate(hour * 30 * Math.PI / 180);
cxt.moveTo(0, -150);
cxt.lineTo(0, 10);
cxt.stroke();
cxt.restore();
cxt.closePath();
cxt.beginPath();
cxt.save();
cxt.lineWidth = 5;
cxt.strokeStyle = "Black";
cxt.translate(250, 250);
cxt.rotate(min * 6 * Math.PI / 180);
cxt.moveTo(0, -130);
cxt.lineTo(0, 10);
cxt.stroke();
cxt.restore();
cxt.closePath();
cxt.beginPath();
cxt.save();
cxt.lineWidth = 3;
cxt.strokeStyle = "red";
cxt.fillStyle = "Black";
cxt.translate(250, 250);
cxt.rotate(sec * 6 * Math.PI / 180);
cxt.moveTo(0, 150);
cxt.lineTo(0, -15);
cxt.stroke();
cxt.beginPath();
cxt.arc(0, 0, 5, 0, 360, false);
cxt.fillStyle = "gray";
cxt.strokeStyle = "red";
cxt.fill();
cxt.closePath();
cxt.beginPath();
cxt.arc(0, 130, 5, 0, 360, false);
cxt.fillStyle = "black";
cxt.strokeStyle = "red";
cxt.fill();
cxt.stroke();
cxt.restore();
cxt.closePath();
}
DrawClock();
setInterval(DrawClock, 1000);
// ]]></script>
1. closePath,beginPath(),用路径画图的时候,需要注意在各个,打开路径,关闭路径
2. 在做旋转的时候要注意设置原点,translate(250,250);
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。