本文摘自PHP中文网,作者不言,侵删。
这篇文章主要介绍了JavaScript学习小结之使用canvas画“哆啦A梦”时钟的相关资料,需要的朋友可以参考下前言:今天看完了Js书的canvas画布那张,好开心~又是心爱的canvas~欧耶~
之前看到有人建议我画蓝胖子,对哦,我怎么把童年最喜欢的蓝胖子忘了,为了表达我对蓝胖子的歉意,所以今天画了会动的hello world,也算是一种进步咯~
好的各位,请上车的乘客往里走,请不要堵塞通道,谢谢。我们开车吧~
正文:
今天先上图吧,看看效果再说

今天的蓝胖子长这样,看到它还是这么胖,我就放心了。这世界还是充满正能量的,总归还有人比我胖,哈哈哈
然后是上代码
html部分
1 | < canvas id = "myCanvas" width = "500" height = "500" >快去升级浏览器吧~</ canvas >
|
Js部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | window.addEventListener( "load" , function (){
var context = document.getElementById( "myCanvas" ).getContext( "2d" );
if (context){
context.beginPath();
context.arc(100,100,99,0,2*Math.PI, false );
context.fillStyle = "#315f9b" ;
context.fill();
context.stroke();
context.beginPath();
context.moveTo(194,100);
context.arc(100,100,94,0,2*Math.PI, false );
context.fillStyle = "#4ba2cf" ;
context.fill();
context.stroke();
var image = new Image();
image.src = "2.png" ;
context.drawImage(image,25,25,150,150);
context.translate(100,100);
context.fillStyle = "#02285a" ;
context.fillText( "12" ,-5,-80);
context.fillText( "6" ,-4,87);
context.fillText( "3" ,80,1);
context.fillText( "9" ,-86,1);
nowTime(context);
}
}, false );
|
以上时钟的表盘都出现了,但是时钟之所以为时钟最重要的就是它能显示时间啊(废话),所以接下来就是画指针咯
nowTime函数部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | function nowTime(context){
var myDate = new Date();
var myHour = myDate.getHours();
if (myHour >= 12){
myHour = myHour-12;
}
var myMin = myDate.getMinutes();
var mySec = myDate.getSeconds();
var hourArc;
if (myHour < 3){
hourArc = 2*Math.PI-(3-myHour)*Math.PI/6;
} else {
hourArc = (myHour-3)*Math.PI/6;
}
switch (myHour){
case 0:
hourArc = Math.PI*3/2; break ;
case 3:
hourArc = 0; break ;
case 6:
hourArc = Math.PI/2; break ;
case 9:
hourArc = Math.PI; break ;
}
drawTime(context,hourArc,60);
var minArc;
if (myMin < 15){
minArc = 2*Math.PI-(15-myMin)*Math.PI/30;
} else {
minArc = (myMin-15)*Math.PI/30;
}
switch (myMin){
case 0:
minArc = Math.PI*3/2; break ;
case 15:
minArc = 0; break ;
case 30:
minArc = Math.PI/2; break ;
case 45:
minArc = Math.PI; break ;
}
drawTime(context,minArc,80);
var secArc;
if (mySec < 15){
secArc = 2*Math.PI-(15-mySec)*Math.PI/30;
} else {
secArc = (mySec-15)*Math.PI/30;
}
switch (mySec){
case 0:
secArc = Math.PI*3/2; break ;
case 14:
secArc = 0; break ;
case 29:
secArc = Math.PI/2; break ;
case 44:
secArc = Math.PI; break ;
}
drawTime(context,secArc,80, "red" );
setTimeout( function (){
clearTime(context);
nowTime(context);
},1000);
}
|
那么,我们具体是怎么操作上下文画出指针的呢?我也不知道,所以,我们今天就到此结束吧~
开玩笑啦,嘿嘿,take it easy(一定要假装被我整到哈)
接下来是drawTime函数,它一共有四个参数(context,theArc,theLength,color="#000"),context一眼看穿是画布的上下文,theArc则是我们要旋转画布的角度,theLength代表指针的长度,color则是指针的颜色。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function drawTime(context,theArc,theLength,color= "#000" ){
context.save();
context.rotate(theArc);
context.beginPath();
context.moveTo(0,0);
context.lineTo(theLength,0);
context.strokeStyle = color;
context.lineWidth = 2;
context.stroke();
context.restore();
}
|
虽然接近尾声啦,但是还有一个很重要的clearTime函数,要是没有它,你的时钟会被密密麻麻的秒针占领的,关爱密集恐惧症患者,我们人人有责
1 2 3 4 5 6 7 8 9 10 11 12 | function clearTime(context){
context.beginPath();
context.arc(0,0,80,0,2*Math.PI, false );
context.fillStyle = "#4ba2cf" ;
context.fill();
var image = new Image();
image.src = "2.png" ;
context.drawImage(image,-75,-75,150,150);
}
|
嗯啦,ok,现在是真的到此为止啦,差不多该去吃饭咯~各位可爱的程序猿们要记得吃饭哦~

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
canvas 模拟实现电子彩票刮刮乐的代码
利用HTML5中的Canvas绘制笑脸的代码
HTML5和CSS3实现3D展示商品信息的代码
以上就是使用canvas画“哆啦A梦”时钟的代码的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
在html5 canvas中放入图片和保存为图片的方法
关于canvas线条的属性
canvas如何来绘制一个椭圆形?canvas画椭圆的方法总结
html5 canvas api中drawimage()方法的使用代码实例分享(图)
h5 canvas实现圆形动态加载进度实例
html5 canvas的事件处理介绍
html5 canvas基本绘图之绘制矩形的示例代码详解
html5 canvas实现粒子时钟的示例代码
html5中canvas画线有毛边如何解决
canvas绘制各种基本图形
更多相关阅读请进入《canvas》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 使用canvas画“哆啦A梦”时钟的代码