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

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

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

瀏覽:228日期: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久久,三上悠亚国产精品一区二区三区
亚洲精品视频一二三区| 国产综合亚洲精品一区二| 亚洲精品日本| 综合激情五月婷婷| 亚洲人亚洲人色久| 日韩av不卡在线观看| 日韩av中文字幕一区二区| 欧美中文一区| 免费在线日韩av| 丰满少妇一区| 久久精品国产福利| 国产精品99一区二区三| 日韩电影二区| 九色精品91| 亚洲综合专区| 国产日韩一区二区三免费高清| 欧美国产另类| 伊人久久在线| 国产精品av一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩av午夜在线观看| 精品视频黄色| 激情综合在线| 亚洲欧洲免费| 国产精品igao视频网网址不卡日韩 | 性欧美69xoxoxoxo| 噜噜噜久久亚洲精品国产品小说| 日韩精品第二页| 91亚洲一区| 亚洲一区观看| 麻豆国产欧美一区二区三区| 欧美精品资源| 在线精品国产亚洲| 麻豆国产精品777777在线| 国产福利片在线观看| 一区二区亚洲精品| 国产私拍福利精品视频二区| 日韩大片免费观看| 亚洲字幕久久| 特黄毛片在线观看| 亚洲bt欧美bt精品777| 久久亚洲人体| 亚洲女同中文字幕| 欧美精品观看| 国模 一区 二区 三区| 日本午夜免费一区二区| 日韩啪啪电影网| 亚洲v天堂v手机在线| 午夜av不卡| 亚洲精品国产日韩| 久草免费在线视频| 亚州av一区| 日韩精品免费一区二区在线观看 | 精品国产欧美日韩一区二区三区| 亚州av乱码久久精品蜜桃| 国产精品调教视频| 婷婷亚洲五月| 久久一区精品| 视频精品一区二区| 亚洲最新无码中文字幕久久| 天堂俺去俺来也www久久婷婷| 欧美羞羞视频| 亚洲精品在线二区| 99精品视频精品精品视频| 国产精品日韩精品中文字幕| 欧美在线综合| 久久婷婷一区| 精品中文在线| 亚洲日本欧美| 图片区亚洲欧美小说区| 国产精品美女午夜爽爽| 蜜臀久久久99精品久久久久久| av免费不卡国产观看| 欧美一级一区| 天堂成人国产精品一区| 色在线中文字幕| 国产精品主播| 国产精品日韩| 久久精品国产大片免费观看| 精品中国亚洲| 青青草国产精品亚洲专区无| 亚洲欧洲一区| 久久激情一区| 久久久久久色| 欧美特黄一区| 五月激情久久| 九九99久久精品在免费线bt| 91成人精品在线| 丝袜美腿成人在线| 在线日韩欧美| 伊人久久国产| 成人三级高清视频在线看| 久久国际精品| 日韩av一区二区在线影视| 蜜臀国产一区二区三区在线播放| 亚洲香蕉网站| 日韩不卡视频在线观看| 福利精品一区| 麻豆国产欧美一区二区三区| 久久激情综合网| 日本成人中文字幕| 亚洲精品激情| 亚洲人www| 亚洲香蕉久久| 亚洲一区二区三区无吗| 石原莉奈一区二区三区在线观看| 自拍日韩欧美| 欧美午夜精品一区二区三区电影| 激情国产在线| 日韩免费高清| 久久视频国产| japanese国产精品| 99久久久久| 久久精品主播| 国产精品原创| 日韩影院二区| 婷婷综合六月| 久久久久美女| 九九在线精品| 亚洲欧洲一区| 男女精品网站| 在线一区二区三区视频| 日韩精品一级二级| 亚洲毛片在线免费| 日韩精品成人在线观看| 欧美亚洲tv| 欧美精品91| 中文在线资源| 欧美一区二区性| 老色鬼久久亚洲一区二区| 亚洲精选成人| 日本强好片久久久久久aaa| 91国内精品| 美日韩一区二区三区| 日本黄色精品| 亚洲第一精品影视| 免费视频久久| 亚洲ww精品| 国产欧美日韩精品一区二区三区| 美日韩一区二区三区| 天堂√中文最新版在线| 欧美日韩一二三四| 99综合视频| 日本免费一区二区视频| 美日韩一区二区三区| 老牛影视精品| av一区二区高清| 深夜福利亚洲| 久久中文在线| 久久中文字幕av| 蜜芽一区二区三区| 国产欧美日韩| 国产精品久久久久久久久妇女| 亚洲日本网址| 免费成人在线视频观看| 国产精品一区二区免费福利视频 | 五月天久久777| 亚洲免费成人av在线| 国产精品巨作av| 婷婷成人综合| 日韩综合一区二区| 国产一区二区精品福利地址| 国产一区日韩一区| 婷婷精品在线| 麻豆国产在线| 欧美日韩国产免费观看视频| 香蕉久久一区| 新版的欧美在线视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品久久久久av蜜臀 | 日韩视频1区| 亚洲永久av| 深夜福利亚洲| 日韩中文影院| 日韩高清欧美激情| 日韩精品久久久久久久电影99爱| 日韩欧美三区| 日韩在线综合| 亚洲va久久| 久久精品91| 国产精品日本一区二区不卡视频| 女人av一区| 美女久久久久久| 亚洲免费影院| 成人日韩av| 日韩三级精品| 欧美日中文字幕| 嫩呦国产一区二区三区av| 亚洲欧美日韩国产一区二区| 狠狠久久伊人中文字幕| 免播放器亚洲一区| 亚洲www啪成人一区二区| 欧美日韩91| 亚洲欧美日本日韩| 精品国产免费人成网站| 欧美日韩精品一区二区三区视频 | 最近国产精品视频| 99国产精品一区二区| 国产精品3区| 亚洲精品在线a|