canvas绘制走动的时针

首先上个效果图

看了大家的评论,这次一定要来一个完整优化版的了。(没有看过上一篇文章的亲爱的们,可以回去看一下哦)

首先对于大家提出的时针和分针要走的准确一点,每一个小时的跨度要慢慢的移动,而不是直接跳过5个刻度

时针的完善:

这里首先时针的话是每一个小时走5个刻度线,也就是30度,那么分钟走一圈,时针走30度,就要把这30度均匀的分成60等份。随着分钟的增加均匀的走动。所以时钟的绘制应该是context.rotate(m*Math.PI/360 + h*30*Math.PI/180); 原本的度数再加上分钟已经走过的。

分针的完善:

分针每50秒走一个刻度线,那么就将这一刻度再均匀的分成60等份,秒钟走一刻度,分钟就走六十分之一刻度。也就是s*(6*Math.PI/180)/60。再加上分钟自己的度数简化一下:ctx.rotate(s*Math.PI/1800 + m*6*Math.PI/180);

下面来瞅一眼部分js代码

//时针

context.save();

context.beginPath();

context.translate(250, 250);

context.rotate(m*Math.PI/360 + h*30*Math.PI/180);

context.lineWidth=10;

context.lineCap="round";

context.strokeStyle="green";

context.moveTo(0, 0);

context.lineTo(0,-100);

context.stroke();

context.restore();

//分针

context.save();

context.beginPath();

context.translate(250, 250);

// 自己的度数+秒针走过的度数

// 秒针走过的度数:s*Math.PI/1800

context.rotate(s*Math.PI/1800+m*6*Math.PI/180);

context.strokeStyle="pink";

context.lineWidth=7;

context.lineCap="round";

context.moveTo(0, 0);

context.lineTo(0,-120);

context.stroke();

context.restore();

//秒针

context.save();

context.beginPath();

context.translate(250, 250);

context.rotate(s*6*Math.PI/180);

context.strokeStyle="yellow";

context.lineWidth=4;

context.lineCap="round";

context.moveTo(0, 0);

context.lineTo(150,0);

context.stroke();

context.restore();

如果还没有懂的话可以加Q群(295383988),来获取源码哦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一:canvas简介 1.1什么是canvas? ①:canvas是HTML5提供的一种新标签 ②:HTML5 ...
    GreenHand1阅读 4,725评论 2 32
  • Cnavas绘制时钟 背景图的绘制(大圆、数字、小圆点),掌握基础知识:圆的绘制(arc方法),关于圆的弧度的计算...
    Iris_mao阅读 2,518评论 7 26
  • 1. Canvas绘制五环 2.Canvas绘制饼状图以及绘制文字 3. Canvas绘制一堆不断变大变小的随机移...
    LiLi原上草阅读 1,344评论 0 7
  • 人生七十古来稀,百岁而今不足奇。 雪夜脱鞋挥断剑,暑天戴帽吟歪诗。 弹琴乱舞休言丑,醉酒狂歌难入围。 亦傻亦疯凭指...
    艾思阅读 711评论 2 5
  • 时间是衡量世界的一个重要维度,漫长而无边。对于每个人来说,我们只是它的一部分。于我们,它是有限和宝贵的。正因为如此...
    讲真书画阅读 224评论 5 2