欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

最丑的時鐘效果!js canvas時鐘制作方法

 更新時間:2016年08月15日 08:51:15   作者:小數(shù)點就是問題  
最丑的時鐘效果,這篇文章主要為大家詳細(xì)介紹了js canvas時鐘制作方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

今日就發(fā)個丑丑的時鐘,老實說 

有沒有什么調(diào)試canvas的工具,老是要在瀏覽器刷新查看效果,好累啊~
 (┬_┬)

代碼: 

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style>
  body{
   background: #eee;
  }
  canvas{
   background: #fff;
  }
 </style>
</head>
<body>
 <canvas width="800" height="800">你瀏覽器不支持,請升級...</canvas>
 <audio id="audio" src="1.wav"></audio>
 <script>
  var oAudio=document.getElementById("audio");
  var oCas=document.getElementsByTagName("canvas")[0];
  var cas=oCas.getContext("2d");
  oAudio.ontimeupdate=function(){
   if(oAudio.currentTime>0.1){
    this.pause();
   }
  }
  /*漸變顏色*/
  var color=cas.createRadialGradient(400,400,10,400,400,200);
   color.addColorStop(0,"#f1f4f5");
   color.addColorStop(1,"#c5c6c7");
  setInterval(function(){
  oAudio.currentTime=0;
  oAudio.play();
  cas.clearRect(0,0,800,800);
  /*畫圓框*/
  cas.lineWidth=3;
  cas.shadowColor="#888";
  cas.shadowOffsetX=1;
  cas.shadowOddsetY=1;
  cas.shadowBlur=5;
  cas.arc(400,400,200,0,Math.PI*2,false);
  cas.strokeStyle=color;
  cas.stroke(); 
  
  /*畫圓內(nèi)*/
  cas.fillStyle=color;  
  cas.fill();

  /*畫時刻*/
  drawTime();
  function drawTime(){
   var len=8;
   var len1=16;
   cas.strokeStyle="#7f7f7f";
   cas.shadowOffsetX=0;
   cas.shadowOddsetY=0;
   cas.shadowBlur=0;
   cas.beginPath();
   for(var i=0;i<60;i++){
    if(i%5==0){
    cas.moveTo(400+Math.cos(i*6*Math.PI/180)*200,400+Math.sin(i*6*Math.PI/180)*200);
    cas.lineTo(400+(200-len1)*Math.cos(i*6*Math.PI/180),400+(200-len1)*Math.sin(i*6*Math.PI/180));
    }else{
    cas.moveTo(400+Math.cos(i*6*Math.PI/180)*200,400+Math.sin(i*6*Math.PI/180)*200);
    cas.lineTo(400+(200-len)*Math.cos(i*6*Math.PI/180),400+(200-len)*Math.sin(i*6*Math.PI/180));
    }
   }
   cas.stroke(); 
  }

  /*畫時針*/
  
  var date=new Date();
  var h=date.getHours();
  var m=date.getMinutes();
  var s=date.getSeconds();
   /*時針*/
  needle(h*5+5*m/60,100,"#579ec5");
  /*分針*/
  needle(m,130,"#5e717c");
  /*秒針*/
  needle(s,150,"#1d1e1e");
  
  /*圓的中心點*/
  cas.fillStyle="#858384";
  cas.beginPath();
  cas.arc(400,400,5,0,2*Math.PI,true);
  cas.shadowOffsetX=1;
  cas.shadowOddsetY=1;
  cas.shadowBlur=5;
  cas.fill();
  },1000);

  /*時針的函數(shù)*/
  function needle(t,len,color){
   var angle=Math.PI/180;
   cas.beginPath();
   cas.strokeStyle=color;
   cas.moveTo(400,400);
   cas.lineTo(400+len*Math.cos((t*6-90)*angle),400+len*Math.sin((t*6-90)*angle));
   cas.stroke();
  }

 </script>
</body>
</html>

這個鐘重點不在怎么畫,在三角函數(shù),三角函數(shù)的使用與角度息息相關(guān),Math.PI是π,Math.sin(),Math.cos()它們都是接受弧度的,所以要 

把角度轉(zhuǎn)換成弧度,在畫鐘前要先判斷時鐘的條件,把圓分成60份,每一份代表一個刻度,還有在圓的坐標(biāo)是數(shù)學(xué)里的正方向為準(zhǔn)的,所以 

需要把開始坐標(biāo)調(diào)一下,減個90度就可以和時鐘的開始位置一樣了。 

在學(xué)canvas前一定要把以前遺忘的數(shù)學(xué)函數(shù)復(fù)習(xí)復(fù)習(xí)一下,不是一些復(fù)雜的算數(shù)就無法做了,canvas的學(xué)習(xí)就是坐標(biāo)的不斷確認(rèn)的,然后連成線 

最后畫成圖,這與數(shù)學(xué)里的點到線,線到面一樣的道理。 

上面的代碼不難都是使用線條畫的,就是重復(fù)的使用畫線函數(shù)和填充顏色。噢~還有外加了一個聲頻標(biāo)簽使用,達(dá)到時鐘的聲音    滴答滴答滴答~

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • js動態(tài)切換圖片的方法

    js動態(tài)切換圖片的方法

    這篇文章主要介紹了js動態(tài)切換圖片的方法,包含完整的css文件與js文件實現(xiàn)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-01-01
  • Bootstrap select實現(xiàn)下拉框多選效果

    Bootstrap select實現(xiàn)下拉框多選效果

    這篇文章主要為大家詳細(xì)介紹了Bootstrap select實現(xiàn)下拉框多選效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • javascript-表格排序(降序/反序)實現(xiàn)介紹(附圖)

    javascript-表格排序(降序/反序)實現(xiàn)介紹(附圖)

    使用了Array方法、sort:降序、reverse:反序完成了基本功能,對于聯(lián)合排序沒有實現(xiàn),感興趣的朋友可以參考下哈
    2013-05-05
  • 根據(jù)后端返回的json數(shù)據(jù)快速生成ts類型的實現(xiàn)代碼

    根據(jù)后端返回的json數(shù)據(jù)快速生成ts類型的實現(xiàn)代碼

    在前端開發(fā)中,我們通常需要處理來自后端或其他數(shù)據(jù)源的 JSON 數(shù)據(jù),這些數(shù)據(jù)可能非常復(fù)雜,包含不同類型的屬性,甚至嵌套對象和數(shù)組,為了更好地使用這些數(shù)據(jù),我們希望將其轉(zhuǎn)換為TypeScript類型定義,以獲得類型檢查和代碼智能提示的好處
    2023-10-10
  • 淺析JavaScript中五種模塊系統(tǒng)的使用

    淺析JavaScript中五種模塊系統(tǒng)的使用

    模塊系統(tǒng)是什么?簡單來說,其實就是我們在一個文件里寫代碼,聲明一些可以導(dǎo)出的字段,然后另一個文件可以將其導(dǎo)入并使用。今天我們來聊聊?JavaScript?的模塊系統(tǒng),感興趣的可以了解一下
    2022-11-11
  • 基于JS實現(xiàn)的隨機數(shù)字抽簽實例

    基于JS實現(xiàn)的隨機數(shù)字抽簽實例

    本文分享了基于JS實現(xiàn)的隨機數(shù)字抽簽的實例代碼。小編認(rèn)為具很好的參考價值,感興趣的朋友可以看下
    2016-12-12
  • JS中的模糊查詢功能

    JS中的模糊查詢功能

    這篇文章主要介紹了JS中的模糊查詢功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 使用GPT寫代碼實現(xiàn)高亮頁面關(guān)鍵字

    使用GPT寫代碼實現(xiàn)高亮頁面關(guān)鍵字

    這篇文章主要為大家介紹了使用GPT寫代碼實現(xiàn)高亮頁面關(guān)鍵字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • JS+Canvas實現(xiàn)的俄羅斯方塊游戲完整實例

    JS+Canvas實現(xiàn)的俄羅斯方塊游戲完整實例

    這篇文章主要介紹了JS+Canvas實現(xiàn)的俄羅斯方塊游戲,結(jié)合完整實例形式分析了Canvas技術(shù)實現(xiàn)俄羅斯方塊游戲的步驟、技術(shù)難點與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-12-12
  • 妙用緩存調(diào)用鏈實現(xiàn)JS方法的重載

    妙用緩存調(diào)用鏈實現(xiàn)JS方法的重載

    方法重載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的參數(shù)的類型或參數(shù)的個數(shù)。簡而言之就是:方法重載就是方法名稱重復(fù),加載參數(shù)不同
    2018-04-04

最新評論