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

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

js+canvas實現轉盤效果(兩個版本)

瀏覽:223日期:2024-04-20 08:12:56

本文實例為大家分享了js+canvas實現轉盤效果的具體代碼,供大家參考,具體內容如下

用到了canvas的繪制,旋轉,重繪操作,定時器,文本,平移,線條,圓,清理畫布等等;

版本一

不可以點擊,刷新旋轉

<!DOCTYPE html><html> <head> <meta charset='UTF-8'> <title>轉盤抽獎</title> <style type='text/css'> #myCanvas { background: #FAEBD7; } </style> </head> <body> <canvas height='500'></canvas> </body> <script type='text/javascript'> var myCanvas = document.getElementById('myCanvas'); var cxt = myCanvas.getContext('2d'); // 平移畫布 cxt.translate(250, 250); // 圓心坐標 var oX = 0; var oY = 0; // 大圓半徑 var oR = 150; // 小圓半徑 var oR1 = 50; // 弧度 var oH = Math.PI / 180; // 定時器 var timer; // 角度 var angle = 0; // 文本 var textArr = ['JavaScript', 'jQuery', 'Vue', 'ajax', 'rect', 'angular', 'HTML', 'css']; // 顏色 var colorArr = []; // 隨機生成顏色 for (var i = 0; i < textArr.length; i++) { var c = 'rgb(' + parseInt(Math.random() * 255) + ',' + parseInt(Math.random() * 255) + ',' + parseInt(Math.random() * 255) + ')' colorArr.push(c); } //起始速度 var seep = Math.random() * 100 + 100; timer = setInterval(function() { if (seep < 0.3) { clearInterval(timer); var index = Math.floor(angle / 45); console.log(index); cxt.font = '12px Arial'; cxt.textAlign = 'center'; cxt.textBaseline = 'middle' cxt.fillStyle = 'black'; var txt = textArr[textArr.length - index-1]; // console.log(cxt.measureText(txt).width); cxt.fillText(txt, 0, 0); } else { //重繪 // 清除畫布 cxt.clearRect(-250, -250, 500, 500); // 處理角度 if (angle >= 360) { angle = 0; } // 處理速度 seep *= 0.95; // 減小速度 angle += seep; // 畫短線 cxt.beginPath(); cxt.strokeStyle = 'red'; cxt.lineWidth = 2; cxt.moveTo(150, 0); cxt.lineTo(180, 0); cxt.stroke(); // 保存環境,旋轉畫布 cxt.strokeStyle = 'chartreuse'; cxt.save(); cxt.rotate(angle * oH); // 畫扇形 for (var i = 0; i < 8; i++) { cxt.fillStyle = colorArr[i]; cxt.beginPath(); cxt.moveTo(0, 0); cxt.arc(0, 0, 150, i * 45 * oH, (i + 1) * 45 * oH); cxt.closePath(); cxt.fill(); cxt.stroke(); } // 畫中心圓 cxt.fillStyle = '#FFF'; cxt.beginPath(); cxt.arc(oX, oY, oR1, 0, 2 * Math.PI); cxt.fill(); // 添加文字 for (var i = 0; i < textArr.length; i++) { cxt.save(); cxt.rotate((i * 45 + 25) * oH); cxt.fillStyle = '#fff'; cxt.font = '16px 微軟雅黑'; cxt.fillText(textArr[i], 70, 0); cxt.restore(); } cxt.restore(); // 環境釋放與環境保存成對 } }, 50); </script></html>

版本二

加了點擊事件

<!DOCTYPE html><html> <head> <meta charset='UTF-8'> <title>轉盤抽獎</title> <style type='text/css'> #myCanvas { background: #FAEBD7; } </style> </head> <body> <canvas height='500'></canvas> </body> <script type='text/javascript'> var myCanvas = document.getElementById('myCanvas'); var cxt = myCanvas.getContext('2d'); // 平移畫布 cxt.translate(250, 250); // 圓心坐標 var oX = 0; var oY = 0; // 大圓半徑 var oR = 150; // 小圓半徑 var oR1 = 50; // 弧度 var oH = Math.PI / 180; // 定時器 var timer; // 角度 var angle = 0; // 文本 var textArr = ['JavaScript', 'jQuery', 'Vue', 'ajax', 'rect', 'angular', 'HTML', 'css']; // 顏色 var colorArr = []; // 隨機生成顏色 for (var i = 0; i < textArr.length; i++) { var c = 'rgb(' + parseInt(Math.random() * 255) + ',' + parseInt(Math.random() * 255) + ',' + parseInt(Math.random() * 255) + ')' colorArr.push(c); } //起始速度 var seep = Math.random() * 100 + 100; drawLine(); myCanvas.onclick = function(event) { var mX = event.clientX - myCanvas.offsetLeft; var mY = event.clientX - myCanvas.offsetTop; if (cxt.isPointInPath(mX, mY)) { var j = 50; var times = null; if (times == null) { times = setInterval(function() { if (seep < 0.3) { clearInterval(timer); var index = Math.floor(angle / 45); console.log(index); cxt.font = '12px Arial'; cxt.textAlign = 'center'; cxt.textBaseline = 'middle' cxt.fillStyle = 'black'; var txt = textArr[textArr.length - index - 1]; cxt.fillText(txt, 0, 0); } else { drawLine(); } }, 50); } } else { alert('no') } } function drawLine() { //重繪 // 清除畫布 cxt.clearRect(-250, -250, 500, 500); // 處理角度 if (angle >= 360) { angle = 0; } // 處理速度 seep *= 0.95; // 減小速度 angle += seep; // 畫短線 cxt.beginPath(); cxt.strokeStyle = 'red'; cxt.lineWidth = 2; cxt.moveTo(150, 0); cxt.lineTo(180, 0); cxt.stroke(); // 保存環境,旋轉畫布 cxt.strokeStyle = 'chartreuse'; cxt.save(); cxt.rotate(angle * oH); // 畫扇形 for (var i = 0; i < 8; i++) { cxt.fillStyle = colorArr[i]; cxt.beginPath(); cxt.moveTo(0, 0); cxt.arc(0, 0, 150, i * 45 * oH, (i + 1) * 45 * oH); cxt.closePath(); cxt.fill(); cxt.stroke(); } // 畫中心圓 cxt.fillStyle = '#FFF'; cxt.beginPath(); cxt.arc(oX, oY, oR1, 0, 2 * Math.PI); cxt.fill(); // 添加文字 for (var i = 0; i < textArr.length; i++) { cxt.save(); cxt.rotate((i * 45 + 25) * oH); cxt.fillStyle = '#fff'; cxt.font = '16px 微軟雅黑'; cxt.fillText(textArr[i], 70, 0); cxt.restore(); } cxt.restore(); // 環境釋放與環境保存成對 } </script></html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美激情一区| 老司机免费视频一区二区三区| 中文字幕日韩欧美精品高清在线| 久久国产亚洲| 鲁鲁在线中文| 98精品久久久久久久| 国产伦精品一区二区三区在线播放| 日韩中文字幕亚洲一区二区va在线| 在线国产一区二区| 九九久久电影| 日韩视频在线一区二区三区| 亚洲婷婷免费| 在线一区免费| 免费看的黄色欧美网站| 日韩天堂在线| 日韩成人精品一区二区| 精品欧美日韩精品| 久久这里只有| 国产粉嫩在线观看| 超碰在线99| 成人日韩精品| 欧美日韩色图| 妖精视频成人观看www| av亚洲免费| 欧美日韩国产免费观看视频| 女同性一区二区三区人了人一| 亚洲欧美日本日韩| 亚洲精品成人一区| 国产欧美日韩在线观看视频| 国产麻豆一区二区三区 | 国产极品一区| 久久国内精品视频| 国产毛片久久久| 麻豆精品av| 精品久久影院| 久久精品av| 亚洲精品欧洲| 欧美国产先锋| 亚洲午夜精品久久久久久app| 日韩精品一二三区| 国产色99精品9i| 偷拍精品精品一区二区三区| 99久久亚洲精品| 亚洲午夜久久| 免费日韩一区二区三区| 美女精品久久| 99久久夜色精品国产亚洲狼| 日韩中文字幕麻豆| 久久精品资源| 伊人精品视频| 91国内精品| 久久人人97超碰国产公开结果| 亚洲一区二区三区中文字幕在线观看| 久久av导航| 国产亚洲激情| 久久久国产精品网站| 五月天久久久| 日韩精品1区2区3区| 9999国产精品| 深夜福利一区| 久久久久久久久99精品大| 亚洲精品免费观看| av资源亚洲| 日韩中文一区二区| 日本精品不卡| 欧美在线黄色| 色婷婷精品视频| 国产精一区二区| 欧美日韩高清| 精品久久久网| 日本亚洲不卡| 激情六月综合| 国产精品欧美日韩一区| 精品在线播放| 国内精品麻豆美女在线播放视频| 免费日韩一区二区| 国产在线不卡一区二区三区| 亚洲一区网站| 成人va天堂| 国产毛片久久久| 亚洲一区日韩| 日韩和的一区二在线| 国产精品亚洲欧美日韩一区在线 | 日韩avvvv在线播放| 欧美不卡高清一区二区三区| 深夜福利亚洲| 99热国内精品| 欧美极品中文字幕| 亚洲综合五月| 亚洲黄页一区| 精品一区av| 欧美综合社区国产| 久久亚洲国产精品一区二区| 99久久婷婷| 国产传媒在线观看| 精品久久91| 你懂的国产精品| 日韩一区中文| 亚州av日韩av| 国产精品嫩草99av在线| 欧美手机在线| 日本在线精品| 日韩av自拍| 91视频久久| 日韩综合在线| 水蜜桃久久夜色精品一区| 国产精品国码视频| 日本午夜精品一区二区三区电影| 免费日韩精品中文字幕视频在线| 日韩精品看片| 精品亚洲美女网站| 日韩成人亚洲| 成人日韩av| 国产精品原创| 国产v日韩v欧美v| 欧美www视频在线观看| 精品久久久久中文字幕小说| 久久超级碰碰| 欧美激情三区| 美女视频免费精品| 精品一区二区三区免费看| 麻豆国产91在线播放| 精品国产aⅴ| 色综合狠狠操| 亚洲a在线视频| 欧美日韩国产亚洲一区| 亚洲激情中文在线| 视频一区中文| 亚洲一区二区毛片| 鲁大师影院一区二区三区| 亚洲福利精品| 99国产精品久久久久久久| 首页欧美精品中文字幕| 蜜桃视频一区二区三区在线观看| 蜜臀精品一区二区三区在线观看 | 国产精品久av福利在线观看| 国产极品嫩模在线观看91精品| 国产一区二区三区不卡视频网站| 日韩欧美视频专区| 欧美成人午夜| 国户精品久久久久久久久久久不卡 | 久久久久久婷| 成人va天堂| 伊人久久亚洲影院| 亚洲精品免费观看| 亚洲+小说+欧美+激情+另类| 欧美日韩亚洲一区在线观看| 精品国产亚洲日本| 久久蜜桃精品| 欧美sss在线视频| 欧美日韩国产一区精品一区| 蜜臀久久久久久久| 国产日韩在线观看视频| 国产a亚洲精品| 尤物网精品视频| 日韩成人午夜精品| 老司机精品视频网| 欧美日韩国产免费观看视频| 日韩中文av| 麻豆精品新av中文字幕| 激情久久中文字幕| 欧美一区=区三区| 裤袜国产欧美精品一区| 亚洲一区二区三区免费在线观看| 亚洲三级毛片| 国产福利亚洲| 色婷婷亚洲mv天堂mv在影片| 午夜国产一区二区| 国产伦精品一区二区三区视频 | 日韩精品91亚洲二区在线观看| 免费日韩一区二区三区| 在线日韩中文| 欧美伊人影院| 久久国产电影| 国产精品一区二区三区www| 久久久久99| 日韩高清在线不卡| 日本国产精品| 亚洲精品在线a| 伊人精品一区| 国产精品jk白丝蜜臀av小说| 日韩精品免费一区二区三区| 中文字幕一区二区av| 亚洲黄色免费av| 丝袜美腿亚洲一区二区图片| 国产劲爆久久| 婷婷成人综合| 久久国产乱子精品免费女| 国产高清久久| 精品国产一区二区三区av片| 亚洲丝袜美腿一区| 成人日韩在线| 麻豆久久一区二区| 伊人久久亚洲美女图片| 国产一区丝袜| 国产麻豆一区二区三区| 蜜桃视频一区二区| 亚洲男女av一区二区| 91亚洲一区| 欧美精品第一区|