日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

css - 一段Javascript用canvas制作的一個頁面時鐘的代碼,有幾處地方不明白,希望有大神能指點一下。

瀏覽:189日期:2022-12-30 10:24:30

問題描述

var canvas=document.getElementById(’canvas’),ctx=canvas.getContext(’2d’),FONT_HEIGHT=15,//字體高度MARGIN=35, //邊緣HAND_TRUNCATION=canvas.width/25,HOUR_HAND_TRUNCATION=canvas.width/10,NUMERAL_SPACING=20, RADIUS=canvas.width/2-MARGIN,HAND_RADIUS=RADIUS+NUMERAL_SPACING;function drawCircle(){ctx.beginPath();ctx.arc(canvas.width/2,canvas.height/2,RADIUS,0,Math.PI*2,true);ctx.stroke();} //畫出時鐘的圓框輪廓function drawNumerals(){ctx.beginPath();ctx.arc(canvas.width/2,canvas.height/2,RADIUS,0,Math.PI*2,true);ctx.stroke(); var numerals=[1,2,3,4,5,6,7,8,9,10,11,12], angle=0, numeralWidth=0;numerals.forEach(function(numeral){ angle=Math.PI/6*(numeral-3); numeralWidth=ctx.measureText(numeral).width; ctx.fillText(numeral,canvas.width/2+Math.cos(angle)*(HAND_RADIUS)-numeralWidth/2, canvas.height/2+Math.sin(angle)*(HAND_RADIUS)+FONT_HEIGHT/3); });} //畫出時鐘的12小時刻度function drawCenter(){ ctx.beginPath(); ctx.arc(canvas.width/2,canvas.height/2,5,0,Math.PI*2,true); ctx.fill();} //時鐘盤心得實心圓點繪畫function drawHand(loc,isHour){ var angle=(Math.PI*2)*(loc/60)-Math.PI/2, handRadius=isHour?RADIUS-HAND_TRUNCATION-HOUR_HAND_TRUNCATION:RADIUS-HAND_TRUNCATION;ctx.moveTo(canvas.width/2,canvas.height/2); ctx.lineTo(canvas.width/2+Math.cos(angle)*handRadius, canvas.height/2+Math.sin(angle)*handRadius); ctx.stroke();}function drawHands(){ var date=new Date, hour=date.getHours();hour=hour>12?hour-12:hour; drawHand(hour*5+(date.getMinutes()/60)*5,true,0.5); drawHand(date.getMinutes(),false,0.5); drawHand(date.getSeconds(),false,0.2);} //指針移動繪畫function drawClock(){drawCircle();drawCenter();drawHands();drawNumerals();}ctx.font=FONT_HEIGHT+’ps Arial’;

loop=setInterval(function(){

ctx.clearRect(0,0,canvas.width,canvas.height);drawClock();

},1000);

在function drawNumerals(){.........}這段函數里面,var numerals=[1,2,3,4,5,6,7,8,9,10,11,12],

angle=0, numeralWidth=0;

第一個是定義的是數組,第二個起始弧度,第三個要定義數組寬度干嘛?

在數組遍歷中numerals.forEach(function(numeral){angle=Math.PI/6*(numeral-3);numeralWidth=ctx.measureText(numeral).width;ctx.fillText(numeral,canvas.width/2+Math.cos(aangle)*(HAND_RADIUS)-numeralWidth/2,canvas.height/2+Math.sin(angle)*(HAND_RADIUS)+FONT_HEIGHT/3);});angle=Math.PI/6*(numeral-3);他這個算法是什么意思?ctx.fillText(numeral,canvas.width/2+Math.cos(aangle)*(HAND_RADIUS)-numeralWidth/2,canvas.height/2+Math.sin(angle)*(HAND_RADIUS)+FONT_HEIGHT/3);這段算法是什么意思?

兩段function drawHand(loc,isHour){。。。。。。}

function drawHand(){........}

函數也看不太懂。

最后ctx.font=FONT_HEIGHT+'ps Arial';這是設置那里的字體?

setInterval();我記得已經是循環了,為什么還要加loop=setInterval();這是什么意思?以上這些不明白的地方希望有大神指點,因為是新手,有些地方可能問的不是太徹底,忘諒解。

問題解答

回答1:

首先,自己不懂,為什么不逐步調試呢?

第二,貼出來的代碼這么亂,你自己讀讀好讀嗎?

既然回你了 就簡單講講

function drawNumerals() { ctx.beginPath(); ctx.arc(canvas.width / 2, canvas.height / 2, RADIUS, 0, Math.PI * 2, true); ctx.stroke();var numerals = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],angle = 0,numeralWidth = 0; numerals.forEach(function (numeral) {// 1- 12 點的弧度值,不懂 打印一遍出來看看不就好了么?// 值從 -1/3π 依次遞增1/6π 最終到3/2π 至于干嘛的 數學知識,畫圖理解。// 3點為0,9點為π 順時針方向 angle = Math.PI / 6 * (numeral - 3);console.log(’angle’, angle);// 文本寬度,1-12 數字的寬度都不一樣的 這個就是獲取文本寬度numeralWidth = ctx.measureText(numeral).width;/** * 填充文本 * @param {String} text 文本 * @param {Number} x 坐標-x * @param {Number} y 坐標-y */// canvas.width / 2 + Math.cos(angle) * (HAND_RADIUS) - numeralWidth / 2 中點坐標 + 半徑*余弦 - 文本寬度的一半 不就表示文本填充的X坐標嗎// 其余自己腦補ctx.fillText(numeral, canvas.width / 2 + Math.cos(angle) * (HAND_RADIUS) - numeralWidth / 2, canvas.height / 2 + Math.sin(angle) * (HAND_RADIUS) + FONT_HEIGHT / 3); });}

寫了這些,好像這個是網上的例子吧,應該有視頻的,你都不愿意百度的,我也是服 Canvas 繪制時鐘。

ctx.font的問題,你知道ctx是什么了,就知道他是設置哪的字體了? ctx哪里來,代碼上有定義。不懂請百度Google。

至于你說loop=setInterval的問題,自己查setInterval。簡單來說loop是這個定時器返回的一個標識,在你不需要這個定時器的時候,可以使用clearInterval(定時器標識) 來清除這個定時器。

最后 答案一直都放在那里,只是你是否愿意去找。
標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲日本免费电影| 国产美女精品视频免费播放软件| 免费在线日韩av| 日韩avvvv在线播放| 日韩二区三区在线观看| 日韩一区二区三免费高清在线观看 | 国产成人黄色| 丰满少妇一区| 亚洲国产欧美日本视频| 新版的欧美在线视频| 亚洲伦乱视频| 久久在线视频免费观看| 一本一道久久a久久精品蜜桃| 日韩视频二区| 日韩激情av在线| 久久av免费| 性欧美videohd高精| 欧美日韩精品免费观看视频完整| 国产一区亚洲| 日韩精品一二三区| 国产精品亚洲综合在线观看| 国产精品久久久久久久久妇女| 国产免费成人| 国产69精品久久| 国产视频欧美| 欧美精品国产白浆久久久久| 久久91导航| 国产精品久久久久久妇女| 91精品亚洲| 精品视频高潮| 国产欧美日韩精品一区二区免费| 亚洲视频综合| 成人av三级| 亚洲欧美日韩国产一区| 国产精品成人一区二区不卡| 鲁大师精品99久久久| 美女视频网站久久| 日韩精品一级| 亚洲免费成人av在线| 国产精品外国| 精品久久97| 蜜桃av一区二区三区电影| 久久精品xxxxx| 麻豆mv在线观看| 中文字幕日本一区二区| 国产aa精品| 亚洲自啪免费| 久久中文字幕一区二区三区| www.51av欧美视频 | 蜜桃av一区二区在线观看| 一本一道久久a久久精品蜜桃| 乱人伦精品视频在线观看| 国产69精品久久| 黄色日韩在线| av一区在线| 日韩不卡免费高清视频| 亚洲精品网址| 欧美.日韩.国产.一区.二区 | 国产亚洲字幕| 99久久婷婷这里只有精品| 蜜臀av国产精品久久久久| 亚洲综合电影| 美女黄网久久| 中文字幕一区二区三区日韩精品| 91精品国产91久久久久久黑人| 成人黄色av| 国产日韩欧美一区在线| 久久精品女人| 荡女精品导航| 亚洲香蕉久久| xxxxx性欧美特大| 亚洲综合中文| 日韩国产在线| 国产欧美日韩一区二区三区四区| 亚洲国产综合在线看不卡| 国产精品二区影院| 国产精品腿扒开做爽爽爽挤奶网站| 高清av一区| 欧美日韩亚洲一区三区| 夜夜嗨网站十八久久| 风间由美中文字幕在线看视频国产欧美| 蜜臀va亚洲va欧美va天堂| 色一区二区三区| 国产探花在线精品一区二区| 麻豆久久精品| 欧美一区二区性| 国产精品观看| 国产精品欧美大片| 另类av一区二区| 水蜜桃精品av一区二区| 夜夜嗨av一区二区三区网站四季av| 日本不卡一区二区三区| 黄色在线网站噜噜噜| 国产精品久一| 欧美久久亚洲| 日本91福利区| 免费看黄色91| 亚洲成人精品| 精品免费av在线| 精品免费在线| 国产精品a级| 亚洲精品影院在线观看| 国产高清一区二区| 日本v片在线高清不卡在线观看| 亚洲一级大片| 日本精品国产| 国产精品普通话对白| 国产精品羞羞答答在线观看| 亚洲免费成人av在线| 亚洲一区黄色| 伊人久久成人| 伊人影院久久| 黄色在线一区| 99riav1国产精品视频| 欧美aa国产视频| 欧美+日本+国产+在线a∨观看| 日本欧美在线| 欧美日韩中文一区二区| 欧美va亚洲va日韩∨a综合色| 午夜视频精品| 久久久久99| 美腿丝袜亚洲三区| 久久久精品国产**网站| 亚洲精品人人| 国产精成人品2018| 日韩欧美网址| 日韩av午夜在线观看| 日本在线高清| 日本精品影院| 另类av一区二区| 亚洲一二三区视频| 欧美精品一区二区久久| 在线观看精品| 999国产精品| 日韩午夜av在线| 爽好多水快深点欧美视频| 水野朝阳av一区二区三区| 免费看日韩精品| 日韩一区网站| 国产麻豆一区二区三区精品视频| 国产精品一区亚洲| 精品精品99| 999久久久91| 老牛国产精品一区的观看方式| 亚久久调教视频| 麻豆视频久久| 久久久男人天堂| 久久久久久美女精品| 伊人久久成人| 日韩午夜视频在线| 国产精品v日韩精品v欧美精品网站 | 国产调教精品| 国产一区二区视频在线看| 免费一二一二在线视频| 亚洲国产专区校园欧美| 免费在线观看一区二区三区| 日本精品在线播放| 国产精久久久| 久久男女视频| 欧美91精品| 日韩黄色av| 午夜久久tv| 亚洲精品福利电影| 日本精品另类| 亚洲精品免费观看| 丝袜脚交一区二区| 欧美日韩国产免费观看视频| 精品视频在线观看网站| 91精品国产自产精品男人的天堂| 韩日一区二区三区| 欧美中文字幕一区二区| 日韩欧美自拍| 精品一区二区三区在线观看视频| 99视频一区| 亚洲天堂免费| 中文字幕在线视频网站| 国产精品精品| 午夜久久av| 麻豆中文一区二区| 国产精品任我爽爆在线播放| 亚洲图片久久| 国产精品一线| 久久精品国产福利| 欧美女激情福利| 国产精品巨作av| 亚洲高清影视| 国产极品模特精品一二| 裤袜国产欧美精品一区| 免费人成精品欧美精品| 国产伊人久久| 免费久久精品视频| 国产精品国产一区| 中文字幕成人| 免费日韩视频| 欧美日韩1区2区3区| 欧美黑人做爰爽爽爽| 欧美激情aⅴ一区二区三区 | 蜜桃av.网站在线观看| 日韩欧美看国产| 91精品福利观看|