最終效果:
1、設定canvas環境,這一部分比較基礎,不做詳細展開。
var canvas=document.getelementbyid2、繪製固定部分('mycanvas');
canvas.width
= document.documentelement.clientwidth
*0.75
;canvas.height
=document.documentelement.clientheight
*0.75
;radius = canvas.height/2
-35;var context=canvas.getcontext
("2d");
context.strokestyle
="#000"
;context.linewidth=2
;
通過分析,我們可以知道,固定部分為大圓,數字,與中心點。大圓與中心點的繪製比較簡單,通過arc函式就能完成。數字部分,我們需要通過計算來得到其座標。假設圓心座標為(a,b),則其x座標為a+cos(angel)*r-c,其y座標為b+sin(angel)*r+c。由於數字在大圓外部,因此需要新增乙個偏移量c。
function drawer(cxt)3、繪製運動部分}
通過分析,我們可以發現運動部分即為時針,分針和秒針。首先,我們通過date()物件得到當前時間。三條線段的出發點都在圓心上,因此我們只需要計算另乙個頂點就行。而計算頂點座標,其實和上面計算數字的座標是一樣的,只要知道其角度即可。以最麻煩的時針為例,它會隨著分鐘的改變而產生細小的變化,因此它的公式是angel=(hours-3)*30+(minutes/60)*30,減3的原因是圓的角度是從x軸正方向開始計算的,而我們的1點在逆時針60度方向,因此需要進行偏移。另外,需要注意的是,math.cos()和math.sin()是以弧度計算的,因此要把角度轉換成弧度,角度轉換成弧度的公式為:π/180×角度。因此,我們最後的公式為angle=math.pi/180*((hours-3)*30+(minutes/60)*30)。
function drawerhand(cxt)4、設定定時器var minutes = mydate.getminutes()
;var seconds = mydate.getseconds()
; angle=
math.pi
/180*(
(hours-3)
*30+(minutes/60)
*30);
cxt.moveto
(canvas.width/2
,canvas.height/2
);cxt.lineto
(canvas.width/2
+math.cos
(angle)
*(radius-75)
,canvas.height/2
+math.sin
(angle)
*(radius-75)
);cxt.stroke()
; angle=
math.pi
/180*(
6*minutes-90)
; cxt.moveto
(canvas.width/2
,canvas.height/2
);cxt.lineto
(canvas.width/2
+math.cos
(angle)
*(radius-45)
,canvas.height/2
+math.sin
(angle)
*(radius-45)
);cxt.stroke()
; angle=
math.pi
/180*(
6*seconds-90)
; cxt.moveto
(canvas.width/2
,canvas.height/2
);cxt.lineto
(canvas.width/2
+math.cos
(angle)
*(radius-15)
,canvas.height/2
+math.sin
(angle)
*(radius-15)
);cxt.stroke()
;}
function control (最後,我們設定定時器,時鐘就開始工作了,但要注意,每次重繪的時候,需要把前面的繪製去除。)var loop = setinterval(control,
1000
);
乙個基於canvas的簡易時鐘效果就完成了。
js 實現簡易時鐘效果
大江東去,浪淘盡,千古風流人物。故壘西邊,人道是,三國周郎赤壁。亂石穿空,驚濤拍岸,捲起千堆雪。江山如畫,一時多少豪傑。遙想公瑾當年,小喬初嫁了,雄姿英發。羽扇綸巾,談笑間,檣櫓灰飛煙滅。故國神遊,多情應笑我,早生華髮。人生如夢,一尊還酹江月。來自奔跑的panda部落,panda每天與您一起進步 d...
使用canvas實現數字時鐘效果
canvas id canvas canvas script function cxt.fillstyle f00 cxt.fillrect 10,10,50,50 cxt.strokestyle 0f0 儲存時間資料 vardata 儲存運動的小球 varballs 設定粒子半徑 varr can...
使用canvas實現簡單的時鐘效果
這次要借助canvas實現時鐘效果,展示當前時間,形狀為圓形。完整實現效果截圖如上 關鍵點 時鐘效果的實現主要分為3部分1 繪製表盤 大小刻度 1 12 等靜態部分的繪製2 展示當前時間3 時針 分針和秒針動起來繪製靜態部分 首先得到canvas和canvas的繪圖環境 var canvas doc...