Javascriptで作るWebページで動くアナログ時計

JavaScript コンピュータ
JavaScript

前回の秒針を動かすプログラムに分針と時針を追加してみました。

$(function(){
  var ele = document.getElementById("cv");
  var ctx = ele.getContext("2d");
  ctx.strokeStyle = "black";
  ctx.lineWidth = 2;
  setInterval(function(){
    var d = new Date();
    var hou = d.getHours();
    if (hou > 12) {
      hou = hou - 12;
    }
    var min = d.getMinutes();
    var sec = d.getSeconds();
    ctx.save();
    ctx.beginPath();
    ctx.clearRect( 0, 0, ele.width, ele.height ) ;
   
    ctx.arc( 150, 150, 120, 0 * Math.PI / 180, 360 * Math.PI / 180, false ) ;
    
    var x = 150;
    var y = 150;
    
    // 秒針
    var r = 100;
    var angle = sec * 6 - 90;
    var radian = (Math.PI * angle) / 180;
    var xx = Math.cos(radian) * r;
    var yy = Math.sin(radian) * r;
    
    ctx.moveTo(x, y);
    ctx.lineTo((x + xx), (y + yy));
    
    // 分針
    var r = 95;
    var angle = min * 6 - 90;
    var radian = (Math.PI * angle) / 180;
    var xx = Math.cos(radian) * r;
    var yy = Math.sin(radian) * r;
    
    ctx.moveTo(x, y);
    ctx.lineTo((x + xx), (y + yy));
    
    // 時針
    var r = 80;
    var angle = (hou * 30) + (min / 2) - 90;
    var radian = (Math.PI * angle) / 180;
    var xx = Math.cos(radian) * r;
    var yy = Math.sin(radian) * r;
    
    ctx.moveTo(x, y);
    ctx.lineTo((x + xx), (y + yy));
     
    ctx.stroke();
    
    ctx.restore();
  }, 1000);
});
プログラム的には前回の記事の内容に分針と時針を追加しただけで、秒針のコードとパラメタが少し違うだけです。
JavaScriptで時計の秒針を表現する。その2
前回の記事ではrotate()でキャンバスごと回転していましたが、それだと分針や時針を描画する場合同時に回転してしまい都合が悪いです。各針ごとレイヤーとして重ね合わせれば良さそうです。その方法は、自分が当初考えていたプログラムと異なるので今...

以上

コメント