莫名其妙的好看有不!git
因而我就想着用js写写看,可否简单的实现这个效果,因而就真的实现了一个很简单(简陋)的效果。github
图片预览一下:canvas
想要实现上述的简单效果用原生的canvas绘图API也不难实现,可是从实现这个效果来说,我选用了 p5.js 这个js动画库。能够帮助你以优雅的方式实现这个效果。将注意力集中在实现效果上,而不是各类偏底层API的调用问题上。bash
API查阅app
Demo预览函数
Demo不少瑕疵,欢迎fork修改、自由创做、使优秀...测试
代码部分其实很简单,根据注释稍微看看就能明白,大体分为:动画
在p5.js的绘图函数arc()
中,有个bugspa
arc(x, y, xd, yd, start_angle, end_angle);
复制代码
在这个函数中当start_angle == end_angle
时会有一个bug,特定的我测试当start_angle == end_angle == -PI/2
时会绘制一个半圆,可是显然这是不对的,当start_angle == end_angle
时,咱们应该什么都不绘制。code
后来我到官方github仓库上,发现一个issue提到的就是关于这个问题。
最后我修改了映射区间避免了start_angle == end_angle == 0
,从0 -> 360 改成 1 -> 360
secondsAngle = map(secondes, 0, 60 * 1000, 1, 360);
minitesAngle = map(minites, 0, 60, 1, 360);
hoursAngle = map(hours % 12, 0, 12, 1, 360);
复制代码