canvas之特丑时钟
感觉是不是特想送钟,老是编写些时钟的效果,今日就发个丑丑的时钟,老实说
有没有什么调试canvas的工具,老是要在浏览器刷新查看效果,好累啊~
(┬_┬)
代码:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title><style>body{background: #eee;}canvas{background: #fff;}</style> </head> <body><canvas width="800" height="800">你浏览器不支持,请升级...</canvas><audio id="audio" src="1.wav"></audio><script>var oAudio=document.getElementById("audio");var oCas=document.getElementsByTagName("canvas")[0];var cas=oCas.getContext("2d");oAudio.ontimeupdate=function(){if(oAudio.currentTime>0.1){this.pause();}}/*渐变颜色*/var color=cas.createRadialGradient(400,400,10,400,400,200);color.addColorStop(0,"#f1f4f5");color.addColorStop(1,"#c5c6c7");setInterval(function(){oAudio.currentTime=0;oAudio.play();cas.clearRect(0,0,800,800);/*画圆框*/cas.lineWidth=3;cas.shadowColor="#888";cas.shadowOffsetX=1;cas.shadowOddsetY=1;cas.shadowBlur=5;cas.arc(400,400,200,0,Math.PI*2,false);cas.strokeStyle=color;cas.stroke(); /*画圆内*/cas.fillStyle=color; cas.fill();/*画时刻*/drawTime();function drawTime(){var len=8;var len1=16;cas.strokeStyle="#7f7f7f";cas.shadowOffsetX=0;cas.shadowOddsetY=0;cas.shadowBlur=0;cas.beginPath();for(var i=0;i<60;i++){if(i%5==0){cas.moveTo(400+Math.cos(i*6*Math.PI/180)*200,400+Math.sin(i*6*Math.PI/180)*200);cas.lineTo(400+(200-len1)*Math.cos(i*6*Math.PI/180),400+(200-len1)*Math.sin(i*6*Math.PI/180));}else{cas.moveTo(400+Math.cos(i*6*Math.PI/180)*200,400+Math.sin(i*6*Math.PI/180)*200);cas.lineTo(400+(200-len)*Math.cos(i*6*Math.PI/180),400+(200-len)*Math.sin(i*6*Math.PI/180));}}cas.stroke(); }/*画时针*/var date=new Date();var h=date.getHours();var m=date.getMinutes();var s=date.getSeconds();/*时针*/needle(h*5+5*m/60,100,"#579ec5");/*分针*/needle(m,130,"#5e717c");/*秒针*/needle(s,150,"#1d1e1e");/*圆的中心点*/cas.fillStyle="#858384";cas.beginPath();cas.arc(400,400,5,0,2*Math.PI,true);cas.shadowOffsetX=1;cas.shadowOddsetY=1;cas.shadowBlur=5;cas.fill();},1000);/*时针的函数*/function needle(t,len,color){var angle=Math.PI/180; cas.beginPath();cas.strokeStyle=color;cas.moveTo(400,400);cas.lineTo(400+len*Math.cos((t*6-90)*angle),400+len*Math.sin((t*6-90)*angle));cas.stroke();}</script> </body> </html>
这个钟重点不在怎么画,在三角函数,三角函数的使用与角度息息相关,Math.PI是π,Math.sin(),Math.cos()它们都是接受弧度的,所以要
把角度转换成弧度,在画钟前要先判断时钟的条件,把圆分成60份,每一份代表一个刻度,还有在圆的坐标是数学里的正方向为准的,所以
需要把开始坐标调一下,减个90度就可以和时钟的开始位置一样了。
在学canvas前一定要把以前遗忘的数学函数复习复习一下,不是一些复杂的算数就无法做了,canvas的学习就是坐标的不断确认的,然后连成线
最后画成图,这与数学里的点到线,线到面一样的道理。
上面的代码不难都是使用线条画的,就是重复的使用画线函数和填充颜色。噢~还有外加了一个声频标签使用,达到时钟的声音 滴答滴答滴答~
转载于:https://www.cnblogs.com/zhangzhicheng/p/5770476.html
canvas之特丑时钟相关推荐
- canvas绘制精细走动时钟
这里简单了利用canvas做了一个时钟,能够实现分针和时针较精确的走动,没有太多难点,重点的是要实现分针和时针走动,角度的计算,笔者在下面进行说明.先看效果图: 颜色单配的比较难看,读者谅解.请看代码 ...
- 基于canvas的原生JS时钟效果
概述 运用html5新增画布canvas技术,绘制时钟效果,无需引用任何插件,纯js. 详细 代码下载:http://www.demodashi.com/demo/11935.html 给大家介绍一个 ...
- s时钟画布 android,Canvas画布实现自定义时钟效果
标题 *{margin:0; padding:0; list-style:none;} .box{ width: 420px; height: 420px; margin: 50px auto 0; ...
- html5 canvas 画的简易时钟
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- android canvas 画按钮,Android 用Canvas轻松绘制一个时钟
接下来这篇文章主要是结束如何轻松自定义一个View并使用Canvas绘制一个时钟的案例,话不多说先上图瞅瞅,一共实现了两种效果,一种是秒动(秒针一秒走一针).另一种是连动式的,秒针不会停会一直走动,话 ...
- canvas简单实现动态时钟
使用到的知识: 1. 获取系统时间 2. 画图形,空心图形,实心图形,以及一些属性 3. for循环 准备工作:添加一块画布1000*1000(随意),引用canvas.js ...
- 使用Canvas HTML5画出时钟
什么是canvas canvas 是html5 新增的一个利用js脚本绘制位图的标签,canvas 标签作为画布,本身不具有绘图的能力,而是依赖其对应的上下文对象[利用getContext()方法取得 ...
- Html5基于Canvas画一个动态时钟
文章目录 前言 一.前期准备 二.绘制刻度 1.流程 2.效果图 三.绘制文字 1.流程 2.效果图 四.绘制指针 1.取得当前时间 2.绘制秒针 3.绘制分针 4.绘制时针 5.效果图 五.绘制圆心 ...
- html5绘制时钟刻度,html5 canvas 画的简易时钟
时钟 //开始之前必须懂得时针各指针的弧度计算公式. var canvas,context; function window_onload(){ canvas = document.getElemen ...
最新文章
- easyui日期处理(开始时间和结束时间)
- Window10+Python3.5安装opencv
- matlab离散点用折线连接起来
- JDK动态代理和CGLib动态代理简单演示
- But how to do it? How to avoid direct competition with giants?
- linux文件偏移函数实验报告,Linux实验报告二.doc
- rpm包常见的格式详解
- 大学生个人网站作业 超简单DIV CSS个人网页成品 简单个人网站作业模板 HTML个人网页设计下载 简约黑白色个人主页
- win桌面显示html,win10怎么把ie图标放桌面上 win10桌面添加ie浏览器图标的方法
- C# 获取PDF文档的字体信息及指定文字的坐标,宽度和高度
- excel文件设置的工作表保护如何撤销
- google scholar 使用不了的问题——已解决
- [BZOJ]4198 [NOI2015] 荷马史诗 哈夫曼树
- 项目领导力与决策管理
- mysql误删除表后无法重建
- Apache Hudi 详解
- Python爬虫获取“房天下“房价数据(下)
- python控制软件点击_Python小程序 控制鼠标循环点击代码实例
- 有限元仿真分析误差来源之边界条件设置-动载荷
- 淘宝小程序扫码进入参数
热门文章
- WPF 分批加载十万个按钮
- HDOJ 1098 Ignatius's puzzle
- 和朋友聊天时好玩的加密小程序(第一版)
- sqlldr,将数据批量导入Oracle数据库
- 在R中调用Java代码
- c#_String.Split 方法进阶篇
- vue渲染大量数据如何优化_Vue - Table表格渲染上千数据优化
- 最好用浏览器_魔镜魔镜,请你告诉我谁是Mac上最好用的浏览器?--全网最好用的12个功能让你玩转Safari...
- oracle 主机名改ip,[oracle 10.2]主机名或者IP地址改变造成的dbconsole服务无法启动解决...
- asp.net core学习笔记