莫名其妙的好看有不!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);
複製代碼