Js实现一个简单的钟表动画

canvas{margin-left:500px;margin-top:100px;

}

/*作者:胖兔

时间:2017.8.9

描述:用js和html5 canvas对象实现一个简单钟表程序*/

varCanvas={//属性

Context:document.getElementById("canvas").getContext('2d'),//擦除

Clear:function(){varcxt=Canvas.Context;varwidth=cxt.canvas.width;varheight=cxt.canvas.height;;this.Context.clearRect(0,0, width, height);

},//radius钟表半径,sencondScaleWidth刻度长度,secondHandWidth秒针长度

CreateClock:function(radius,sencondScaleWidth,secondHandWidth){varme= this;varradius=radius;varsencondScaleWidth=sencondScaleWidth;varsecondHandWidth=secondHandWidth;//小时刻度

varhourScaleWidth=sencondScaleWidth*2;//时针分针长度

varhourHandWidth=secondHandWidth*80/100;

//分针长度

varminuteHandWidth=secondHandWidth*90/100;

//确定圆心坐标

varpoint={x:this.Context.canvas.width/2,y:this.Context.canvas.height/2};varctx= this.Context;//获取上下文

//绘制圆圈

functiondrawCircle(){

ctx.save();//记录画笔状态

//确定画笔的位置在圆心点

ctx.translate(point.x,point.y);//ctx.fillStyle = "black";

ctx.strokeStyle="gray";

ctx.lineWidth= 2;

ctx.beginPath();//开始绘制路径

ctx.arc(0,0,radius,0,Math.PI*2);

ctx.closePath();//关闭路径

ctx.stroke();//绘制

ctx.restore();//复位

}//绘制刻度

functiondrawScale(){

ctx.save();//记录画笔状态

varperHourRadian=Math.PI/6;

varperMinuteRadian=Math.PI/30;

//确定画笔的位置在圆心点

ctx.translate(point.x,point.y);

ctx.strokeStyle="gray";//此处为了省事,只在表盘上简单的写了几个时间数字

ctx.font= "bold 30px impack"

vardc=radius-hourScaleWidth-30;

ctx.fillText("3", dc,10);

ctx.fillText("6",-10,dc );

ctx.fillText("9",-dc,10);

ctx.fillText("12",-15,-dc);

ctx.stroke();for(vari=0;i<12;i++){//坐标旋转

ctx.rotate(perHourRadian);

ctx.moveTo(radius-hourScaleWidth,0);

ctx.lineTo(radius,0);

}for(vari=0;i<60;i++){//坐标旋转

ctx.rotate(perMinuteRadian);

ctx.moveTo(radius-sencondScaleWidth,0);

ctx.lineTo(radius,0);

}

ctx.stroke();//绘制

ctx.restore();//radian

}//drawScale();

functiondrawHand(){varmyDate= newDate();varcurHour=myDate.getHours();varcurMinute=myDate.getMinutes();varcurSecond=myDate.getSeconds();//绘制时针

curHour=curHour>12?curHour-12:curHour;varhourRadian=(curHour+curMinute/60+curSecond/3600)*(Math.PI/6);

//绘制分针

varminuteRadian=(curMinute+curSecond/60) * (Math.PI/30);//绘制秒针

varsecondRadian=curSecond*(Math.PI/30);

functionrun(radian,width,color){

ctx.save();

ctx.translate(point.x,point.y);

ctx.rotate(-Math.PI/2);

ctx.strokeStyle=color

ctx.beginPath();

ctx.rotate(radian);

ctx.moveTo(0,0);

ctx.lineTo(width,0);

ctx.closePath();

ctx.stroke();

ctx.restore();

}

run(hourRadian,hourHandWidth,"black");

run(minuteRadian,minuteHandWidth,"green");

run(secondRadian,secondHandWidth,"red");

}//drawHand();

functiondrawAll(){

me.Clear();

drawCircle();

drawScale();

drawHand();

}

setInterval(drawAll,1000);

}

};

Canvas.CreateClock(290,20,200);

java钟表动画_js实现一个简单钟表动画(javascript+html5 canvas)相关推荐

  1. js 获得明天0点时间戳_js实现一个简单钟表动画(javascript+html5 canvas)

    自己学生时代的代码,发现还保存着,今天拿出来分享下. 用js和html5 canvas对象实现一个简单钟表程序 主要用到的就是h5的canvas对象 canvas对象本人也不是很熟,大致看了几个常用的 ...

  2. 将Java程序变成可执行文件的一个简单方法

    将Java程序变成可执行文件的一个简单方法 运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw ...

  3. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)

    java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

  4. java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  5. java 语言 写字板_一个简单的java语言写字板.docx

    一个简单的java语言写字板.docx 一个简单的JAVA语言写字板一.需求分析1.需求分析:现在网络上各种文档编辑器数不胜数.功能也是应有尽有,有能改变字体的,有可以改变字体颜色的,但是,这些软件有 ...

  6. java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 本源 ...

  7. pr如何跳到关键帧_PR教程 如何利用pr制作一个简单的动画

    Adobe Premiere Pro简称PR,是一款非常不错的视频制作编辑软件,如何如何利用pr制作一个简单的动画,这里小编为大家带来了pr动画制作教程--利用pr制作动画,一起来学习一下吧! Ado ...

  8. canvas动画科技园_8个经典炫酷的HTML5 Canvas动画欣赏

    HTML5非常强大,尤其是Canvas技术的应用,让HTML5几乎可以完成所有Flash能完成的效果.本文精选了8个经典炫酷的HTML5 Canvas动画欣赏,每一个都提供全部的源代码,希望对你有所帮 ...

  9. html小人动画效果代码,JavaScript+html5 canvas绘制的小人效果

    本文实例讲述了JavaScript+html5 canvas绘制的小人效果.分享给大家供大家参考,具体如下: 运行效果截图如下: index.html代码如下: canvas中的缩放 #canvas ...

  10. java 缓存方法_Java实现一个简单的缓存方法

    Java实现一个简单的缓存方法 发布时间:2020-09-07 21:39:55 来源:脚本之家 阅读:99 作者:BrightLoong 缓存是在web开发中经常用到的,将程序经常使用到或调用到的对 ...

最新文章

  1. C++的集成开发环境(IDE)
  2. php如何让字母加1,如何使用PHP以任何顺序(从12个字母组成6个单词组成一个字母)进行字符搜索?...
  3. Flying框架思路与感想
  4. python的赋值与参数传递(python和linux切换)
  5. 相关与卷积、各种误差
  6. java数字计算结果_Java编写程序之输入一个数字实现该数字阶乘的计算
  7. 基于SSM的医学健康网站
  8. 现金支票打印模板excel_Excel的正确使用技巧-Excel的提速大法
  9. 摄像机标定原理与操作
  10. 中职计算机专业英语说课稿,中职英语说课稿模板.doc
  11. Eplan教程——项目检查错误 005013/005014:连接点类型不同
  12. 1970年图灵奖--詹姆斯·威尔金森生平
  13. Ant Deign Pro - ProTable - 高级表格 通用打印组件
  14. 利用SS7漏洞可追踪全球数十亿部手机 黑客千里之外窃听澳洲议员
  15. 海义QQ群共享下载者的一些图例使用步骤教程
  16. 7-38 寻找大富翁 (25分)
  17. 新媒体运营胡耀文教程:产品运营视阈下的数据分析
  18. Nova 最新高度集成的SoC NT98530用于开发4K@60的IPC产品_AI算法承载硬件_开发实例
  19. python-字符串补录
  20. 考虑碳交易机制的园区综合能源系统电热协同运行优化研究(Matlab代码实现)

热门文章

  1. 【git】git+码云上传代码
  2. 正态分布是离散分布还是连续分布_内容范围:正态分布,泊松分布,多项分布,二项分布,伯努利分布...
  3. php Class 'ZipArchive' not found
  4. [电影]《指环王》新老三部曲完全赏析(王者归来)
  5. Linux系统中的远程访问及控制
  6. 科技论文写作常用句式结构
  7. 如何查看虚拟机服务器ftp,如何通过FTP工具查看虚拟空间使用了多少?
  8. Git commit --amend 修改提交信息
  9. Day11 Dear Japanese English Learners
  10. 爬虫笔记37:android控件ListView的讲解、fiddler的安装与使用、fiddler和模拟器的配合使用、案例(爬取豆果美食app)