中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何通過Canvas+JS實現簡易的時鐘

發布時間:2021-11-24 13:55:18 來源:億速云 閱讀:144 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關如何通過Canvas+JS實現簡易的時鐘,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

之前學習了下html5中的canvas元素,為了練練手就實現了一個簡易的時鐘。時鐘本身并不復雜,也沒有使用圖片進行美化,不過麻雀雖小五臟俱全,下面就與大家分享一下:

實現效果:


如何通過Canvas+JS實現簡易的時鐘

html代碼:

<!DOCTYPE html> <html> <head>     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />     <title>Clock</title>     <style type="text/css">     *{         margin: 0;         padding: 0;     }     .canvas{         margin-left: 20px;         margin-top: 20px;         border: solid 1px;     }     </style> </head> <body onload= "main()">  <canvas class = "canvas" id="canvasId" width = '500px' height = '400px'></canvas>  <script type= "text/javascript" src = "Clock.js"></script> </body> </html>

JS代碼:

var Canvas = {};  Canvas.cxt = document.getElementById('canvasId').getContext('2d');  Canvas.Point = function(x, y){     this.x = x;     this.y = y; };  /*擦除canvas上的所有圖形*/ Canvas.clearCxt = function(){     var me = this;     var canvas = me.cxt.canvas;        me.cxt.clearRect(0,0, canvas.offsetWidth, canvas.offsetHeight); };  /*時鐘*/ Canvas.Clock = function(){     var me = Canvas,         c = me.cxt,         radius = 150, /*半徑*/         scale = 20, /*刻度長度*/         minangle = (1/30)*Math.PI, /*一分鐘的弧度*/         hourangle = (1/6)*Math.PI, /*一小時的弧度*/         hourHandLength = radius/2, /*時針長度*/         minHandLength = radius/3*2, /*分針長度*/         secHandLength = radius/10*9, /*秒針長度*/         center = new me.Point(c.canvas.width/2, c.canvas.height/2); /*圓心*/         /*繪制圓心(表盤中心)*/     function drawCenter(){         c.save();          c.translate(center.x, center.y);           c.fillStyle = 'black';         c.beginPath();         c.arc(0, 0, radius/20, 0, 2*Math.PI);         c.closePath();         c.fill();         c.stroke();          c.restore();     };      /*通過坐標變換繪制表盤*/     function drawBackGround(){         c.save();          c.translate(center.x, center.y); /*平移變換*/         /*繪制刻度*/         function drawScale(){            c.moveTo(radius - scale, 0);            c.lineTo(radius, 0);          };          c.beginPath();         c.arc(0, 0, radius, 0, 2*Math.PI, true);         c.closePath();              for (var i = 1; i <= 12; i++) {            drawScale();            c.rotate(hourangle); /*旋轉變換*/         };         /*繪制時間(3,6,9,12)*/         c.font = " bold 30px impack"         c.fillText("3", 110, 10);         c.fillText("6", -7, 120);         c.fillText("9", -120, 10);         c.fillText("12", -16, -100);         c.stroke();          c.restore();     };      /*繪制時針(h: 當前時(24小時制))*/     this.drawHourHand = function(h){          h = h === 0? 24: h;          c.save();         c.translate(center.x, center.y);          c.rotate(3/2*Math.PI);          c.rotate(h*hourangle);          c.beginPath();         c.moveTo(0, 0);         c.lineTo(hourHandLength, 0);         c.stroke();         c.restore();     };      /*繪制分針(m: 當前分)*/     this.drawMinHand = function(m){          m = m === 0? 60: m;          c.save();         c.translate(center.x, center.y);          c.rotate(3/2*Math.PI);          c.rotate(m*minangle);          c.beginPath();         c.moveTo(0, 0);         c.lineTo(minHandLength, 0);         c.stroke();         c.restore();     };      /*繪制秒針(s:當前秒)*/     this.drawSecHand = function(s){          s = s === 0? 60: s;          c.save();         c.translate(center.x, center.y);          c.rotate(3/2*Math.PI);          c.rotate(s*minangle);          c.beginPath();         c.moveTo(0, 0);         c.lineTo(secHandLength, 0);         c.stroke();         c.restore();     };      /*依據本機時間繪制時鐘*/     this.drawClock = function(){         var me = this;           function draw(){            var date = new Date();             Canvas.clearCxt();             drawBackGround();            drawCenter();            me.drawHourHand(date.getHours() + date.getMinutes()/60);            me.drawMinHand(date.getMinutes() + date.getSeconds()/60);            me.drawSecHand(date.getSeconds());         }         draw();         setInterval(draw, 1000);     };   };   var main = function(){     var clock = new Canvas.Clock();     clock.drawClock(); };

代碼中涉及到了一些簡單的canvas元素API 大家google一下即可,

看完上述內容,你們對如何通過Canvas+JS實現簡易的時鐘有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涞水县| 正安县| 左云县| 玛多县| 察哈| 兴文县| 商城县| 神农架林区| 沁水县| 荣昌县| 鹤壁市| 延长县| 新密市| 林周县| 鄂托克前旗| 靖远县| 克什克腾旗| 乌苏市| 彰化市| 陈巴尔虎旗| 通化县| 仁化县| 仪陇县| 双城市| 灌云县| 库伦旗| 乌鲁木齐市| 义乌市| 安泽县| 龙陵县| 河东区| 成都市| 秦皇岛市| 太仆寺旗| 衡阳县| 东台市| 岳阳市| 宁晋县| 杭锦旗| 平谷区| 辉南县|