, 今日は十分な時間であり、HTML5 の小さな例を、HTML5 を学習する準備ができている、または学習していない「子供向け」に示したいと思います。あなたの学習に役立ちます!なんてマスターなんだ!飛ばしてください!
MDN の例とは少し異なる、水を試して時計を描きました。自分で作ってますよ!<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"> <title>Title</title> </head><body onload="draw()"> <canvas id="canvas" width="300" height="300"> </canvas> <script> function init() { var ctx = document.getElementById('canvas').getContext('2d'); ctx.save(); ctx.clearRect(0,0,300,300); ctx.translate(150,150); ctx.lineWidth = 4; ctx.strokeStyle = "#a77"; ctx.beginPath(); ctx.arc(0,0,100,0,Math.PI*2,true); ctx.stroke(); ctx.rotate(-Math.PI/2);//minute mark ctx.save();for(var i = 0;i<60;i++){if(i%5 != 0){ ctx.beginPath(); ctx.moveTo(90,0); ctx.lineTo(94,0); ctx.stroke(); } ctx.rotate(Math.PI/30); } ctx.restore();//hour mark ctx.save();for(var i=1;i<=12;i++){ ctx.beginPath(); ctx.moveTo(85,0); ctx.lineTo(95,0); ctx.stroke(); ctx.rotate(Math.PI/6); } ctx.restore(); window.requestAnimationFrame(clock); }function clock() {var ctx = document.getElementById('canvas').getContext('2d');var now = new Date();var sec = now.getSeconds();var min = now.getMinutes();var hr = now.getHours(); hr = hr>=12 ? hr-12 : hr; ctx.beginPath(); ctx.arc(0,0,82,0,Math.PI*2,false); ctx.clip(); ctx.clearRect(-90,-90,180,180);//write hour ctx.save(); ctx.lineWidth = 6; ctx.rotate(hr*Math.PI/6 + min*Math.PI/360 + sec*Math.PI/21600); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(50,0); ctx.stroke(); ctx.restore();//write minute ctx.save(); ctx.lineWidth = 3; ctx.rotate(min*Math.PI/30 + sec*Math.PI/1800); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(65,0); ctx.stroke(); ctx.restore();//write second ctx.save(); ctx.lineWidth = 1; ctx.rotate(sec*Math.PI/30); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(80,0); ctx.stroke(); ctx.restore(); window.requestAnimationFrame(clock); } init(); </script> </body> </html>
canvasRendingContext2D.rotate(angle)
ここで Math.PI は半円で、その半円は 6 時間なので、Math.PI/6 は短針が 1 時間で移動する円弧です。 分針が 1 回転すると、時針も 1/12 回転するため、分に対して時針が移動する円弧は次のように計算できます: Math.PI*2/60*12 =>Math .PI/360 中古でも同様です。 次に、ポインタを再描画します。 針を描き直さなければ、1分後には360度秒針がいっぱいの時計が完成します。このように: では、ポインタ部分の領域を再描画するにはどうすればよいでしょうか? トリミングを考えました。次に、クリップされた領域を再描画します。 それだけです! (ラララララ、踊ってララララ~~~)以上がキャンバス上にアニメーション時計を描画するサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。