电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:133日期: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
相關文章:
主站蜘蛛池模板: 螺钉式热电偶_便携式温度传感器_压簧式热电偶|无锡联泰仪表有限公司|首页 | 在线PH计-氧化锆分析仪-在线浊度仪-在线溶氧仪- 无锡朝达 | 烟台条码打印机_烟台条码扫描器_烟台碳带_烟台数据采集终端_烟台斑马打印机-金鹏电子-金鹏电子 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 工业rfid读写器_RFID工业读写器_工业rfid设备厂商-ANDEAWELL | 净化车间_洁净厂房_净化公司_净化厂房_无尘室工程_洁净工程装修|改造|施工-深圳净化公司 | 中国玩具展_玩具展|幼教用品展|幼教展|幼教装备展 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 模切之家-专注服务模切行业的B2B平台!| 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 减速机三参数组合探头|TSM803|壁挂式氧化锆分析仪探头-安徽鹏宸电气有限公司 | 成人纸尿裤,成人尿不湿,成人护理垫-山东康舜日用品有限公司 | 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | 代做标书-代写标书-专业标书文件编辑-「深圳卓越创兴公司」 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 智能终端_RTU_dcm_北斗星空自动化科技| 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 耐酸碱泵-自吸耐酸碱泵型号「品牌厂家」立式耐酸碱泵价格-昆山国宝过滤机有限公司首页 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 锥形螺带干燥机(新型耙式干燥机)百科-常州丰能干燥工程 | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 阻燃剂-氢氧化镁-氢氧化铝-沥青阻燃剂-合肥皖燃新材料 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 米顿罗计量泵(科普)——韬铭机械 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 工业制氮机_psa制氮机厂家-宏骁智能装备科技江苏有限公司 |