HTML 5-Canvasで動く時計を作る
3667 ワード
まずcanvasはHTML 5に追加された要素であり、グラフィックを描くのに特化していることを理解します.ページにcanvas要素を配置すると、キャンバスが配置され、グラフィックの描画が可能になります.
canvasに簡単なスタイルを追加
以下は原生JSを用いて実現する
canvasに簡単なスタイルを追加
以下は原生JSを用いて実現する
var oC = document.getElementById("canvas")
var oGC = oC.getContext("2d") // "2d"
function draw(){
var oDate = new Date()
// , ,
var oHours = oDate.getHours()
var oMin = oDate.getMinutes()
var oSec = oDate.getSeconds()
//
var oHoursValue = (-90+oHours*30+oMin/2)*Math.PI/180
var oMinValue = (-90+oMin*6)*Math.PI/180
var oSecValue = (-90+oSec*6)*Math.PI/180
// 60
var x = 200
var y = 200
var r = 150
oGC.save()
oGC.beginPath()
for (var i=0;i<60;i++) {
oGC.moveTo(x,y)
oGC.arc(x,y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180)
}
oGC.closePath()
oGC.stroke()
oGC.restore()</code></pre>
<p><span style="color:#f33b45;"> : , closePath() 。 canvas 。</span></p>
<h2><span style="color:#f33b45;">Hint:</span></h2>
<p style="margin-left:0cm;"> ,canvas arc ,</p>
<table border="1" style="width:568px;">
<tbody>
<tr>
<td style="background-color:#bfbfbf;border-color:#000000;width:426.1pt;"> <p style="margin-left:0cm;">ctx.arc(x,y,radius,startAngle,endAngle,anticlockwise)</p> </td>
</tr>
</tbody>
</table>
<p style="margin-left:0cm;"> 6 ,x ,y ,radius ,startAngle ,endAngle , anticlockwise 。false 。( )。</p>
<p style="margin-left:0cm;"> </p>
<p style="margin-left:0cm;"> </p>
<p>1. </p>
<pre class="has"><code class="language-html">oGC.save()
oGC.beginPath()
oGC.fillStyle = "white"
oGC.moveTo(x,y)
oGC.arc(x,y,r*19/20,0,360*Math.PI/180)
oGC.closePath()
oGC.fill()
oGC.restore()</code></pre>
<p>2. </p>
<pre class="has"><code class="language-html">oGC.save()
oGC.beginPath()
oGC.fillStyle = "white"
oGC.moveTo(x,y)
oGC.arc(x,y,r*18/20,0,360*Math.PI/180)
oGC.closePath()
oGC.fill()
oGC.restore()</code></pre>
<p>3. 12 </p>
<pre class="has"><code class="language-html">oGC.save()
oGC.beginPath()
oGC.lineWidth = 3
for (var i=0;i<12;i++) {
oGC.moveTo(x,y)
oGC.arc(x,y,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180)
}
oGC.closePath()
oGC.stroke()
oGC.restore()</code></pre>
<p>4. , , , </p>
<pre class="has"><code class="language-html">//
oGC.save() //
oGC.beginPath()
oGC.moveTo(x,y)
oGC.strokeStyle = "blue"
oGC.arc(x,y,r*10/20,oHoursValue,oHoursValue)
oGC.closePath()
oGC.stroke()
oGC.restore() //
//
oGC.save()
oGC.beginPath()
oGC.moveTo(x,y)
oGC.strokeStyle = "green"
oGC.arc(x,y,r*12/20,oMinValue,oMinValue)
oGC.closePath()
oGC.stroke()
oGC.restore()
//
oGC.save()
oGC.beginPath()
oGC.moveTo(x,y)
oGC.strokeStyle = "red"
oGC.arc(x,y,r*16/20,oSecValue,oSecValue)
oGC.closePath()
oGC.stroke()
oGC.restore()
}
//
setInterval(function(){
draw()
},1000)
draw()