亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js HTML5 Canvas繪制轉盤抽獎

2019-11-20 09:14:44
字體:
來源:轉載
供稿:網友

本文實例為大家分享了js轉盤抽獎的具體代碼,供大家參考,具體內容如下

1.實現的基本效果

 

2.主要的內容

 •html5中canvas標簽的使用
 •jQueryRotate.js旋轉插件

3.主要html代碼

 <body>  <div class="content">    <div class="wheel">      <canvas class="item" id="wheelCanvas" width="422px" height="422px"></canvas>      <img class="pointer" src="images/wheel-pointer.png"/>    </div>  </div>  <div class="tips" >    <span id="tip">jason</span>  </div></body></html>

4.主要的css代碼

 .content{  display:block;  width:95%;  margin: 30px auto;}.content .wheel{  display:block;  width:100%;  position:relative;  background-image:url(../images/wheel-bg.png);  background-size:100% 100%;}.content .wheel canvas.item{  width:100%;}.content .wheel img.pointer{  position:absolute;  width:31.5%;  height:42.5%;  left:34.6%;  top:23%;}.tips{  text-align:center;  margin:20px 0;  font:normal 24px 'MicroSoft YaHei';}

5.核心js代碼

/* * 渲染轉盤 * */function drawWheelCanvas(){  // 獲取canvas畫板,相當于layer??  var canvas = document.getElementById("wheelCanvas");//  var canvas = ($("#wheelCanvas")).get()[0]; // 注意,jQuery獲取的是包裝過的對象,不是DOM對象,可以進行轉換  // 計算每塊占的角度,弧度制  var baseAngle = Math.PI * 2 / (turnWheel.rewardNames.length);  // 獲取上下文  var ctx=canvas.getContext("2d");  var canvasW = canvas.width; // 畫板的高度  var canvasH = canvas.height; // 畫板的寬度  //在給定矩形內清空一個矩形  ctx.clearRect(0,0,canvasW,canvasH);  //strokeStyle 繪制顏色  ctx.strokeStyle = "#FFBE04"; // 紅色  //font 畫布上文本內容的當前字體屬性  ctx.font = '16px Microsoft YaHei';  // 注意,開始畫的位置是從0°角的位置開始畫的。也就是水平向右的方向。  // 畫具體內容  for(var index = 0 ; index < turnWheel.rewardNames.length ; index++)  {    // 當前的角度    var angle = turnWheel.startAngle + index * baseAngle;    // 填充顏色    ctx.fillStyle = turnWheel.colors[index];    // 開始畫內容    // ---------基本的背景顏色----------    ctx.beginPath();    /*     * 畫圓弧,和IOS的Quartz2D類似     * context.arc(x,y,r,sAngle,eAngle,counterclockwise);     * x :圓的中心點x     * y :圓的中心點x     * sAngle,eAngle :起始角度、結束角度     * counterclockwise : 繪制方向,可選,False = 順時針,true = 逆時針     * */    ctx.arc(canvasW * 0.5, canvasH * 0.5, turnWheel.outsideRadius, angle, angle + baseAngle, false);    ctx.arc(canvasW * 0.5, canvasH * 0.5, turnWheel.insideRadius, angle + baseAngle, angle, true);    ctx.stroke();    ctx.fill();    //保存畫布的狀態,和圖形上下文棧類似,后面可以Restore還原狀態(坐標還原為當前的0,0),    ctx.save();    /*----繪制獎品內容----重點----*/    // 紅色字體    ctx.fillStyle = "#E5302F";    var rewardName = turnWheel.rewardNames[index];    var line_height = 17;    // translate方法重新映射畫布上的 (0,0) 位置    // context.translate(x,y);    // 見PPT圖片,    var translateX = canvasW * 0.5 + Math.cos(angle + baseAngle / 2) * turnWheel.textRadius;    var translateY = canvasH * 0.5 + Math.sin(angle + baseAngle / 2) * turnWheel.textRadius;    ctx.translate(translateX,translateY);    // rotate方法旋轉當前的繪圖,因為文字適合當前扇形中心線垂直的!    // angle,當前扇形自身旋轉的角度 + baseAngle / 2 中心線多旋轉的角度 + 垂直的角度90°    ctx.rotate(angle + baseAngle / 2 + Math.PI / 2);    /** 下面代碼根據獎品類型、獎品名稱長度渲染不同效果,如字體、顏色、圖片效果。(具體根據實際情況改變) **/    // canvas 的 measureText() 方法返回包含一個對象,該對象包含以像素計的指定字體寬度。    // fillText() 方法在畫布上繪制填色的文本。文本的默認顏色是黑色. fillStyle 屬性以另一種顏色/漸變來渲染文本    /*     * context.fillText(text,x,y,maxWidth);     * 注意?。?!y是文字的最底部的值,并不是top的值?。?!     * */    if(rewardName.indexOf("M")>0){//查詢是否包含字段 流量包      var rewardNames = rewardName.split("M");      for(var j = 0; j<rewardNames.length; j++){        ctx.font = (j == 0)?'bold 20px Microsoft YaHei':'16px Microsoft YaHei';        if(j == 0){          ctx.fillText(rewardNames[j]+"M", -ctx.measureText(rewardNames[j]+"M").width / 2, j * line_height);        }else{          ctx.fillText(rewardNames[j], -ctx.measureText(rewardNames[j]).width / 2, j * line_height);        }      }    }else if(rewardName.indexOf("M") == -1 && rewardName.length>6){//獎品名稱長度超過一定范圍      rewardName = rewardName.substring(0,6)+"||"+rewardName.substring(6);      var rewardNames = rewardName.split("||");      for(var j = 0; j<rewardNames.length; j++){        ctx.fillText(rewardNames[j], -ctx.measureText(rewardNames[j]).width / 2, j * line_height);      }    }else{      //在畫布上繪制填色的文本。文本的默認顏色是黑色      ctx.fillText(rewardName, -ctx.measureText(rewardName).width / 2, 0);    }    //添加對應圖標    if(rewardName.indexOf("Q幣")>0){      // 注意,這里要等到img加載完成才能繪制      imgQb.onload=function(){        ctx.drawImage(imgQb,-15,10);      };      ctx.drawImage(imgQb,-15,10);    }else if(rewardName.indexOf("謝謝參與")>=0){      imgSorry.onload=function(){        ctx.drawImage(imgSorry,-15,10);      };      ctx.drawImage(imgSorry,-15,10);    }    //還原畫板的狀態到上一個save()狀態之前    ctx.restore();    /*----繪制獎品結束----*/  }}

最后
這玩意和IOS里面的Quartz2D技術幾乎一樣....
詳細代碼>>>>點擊下載 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产中文日韩欧美| 清纯唯美亚洲激情| 亚洲欧美国产日韩天堂区| 国产精品免费视频xxxx| 国产精品久久久久久中文字| 在线免费看av不卡| 懂色av一区二区三区| 久久网福利资源网站| 久久久精品久久久| 国产精品毛片a∨一区二区三区|国| 亚洲国产日韩欧美在线99| 日韩电影免费在线观看| 日韩在线免费高清视频| 色青青草原桃花久久综合| 欧美另类极品videosbestfree| 亚洲另类激情图| 欧美性理论片在线观看片免费| 国产丝袜视频一区| 日韩美女av在线免费观看| 日韩免费精品视频| 日韩在线视频观看正片免费网站| 国产在线观看不卡| 81精品国产乱码久久久久久| 欧美午夜精品久久久久久久| 久久久久久av| 奇米四色中文综合久久| 久久男人资源视频| 日韩成人在线视频观看| 亚洲新声在线观看| 欧美午夜宅男影院在线观看| 日韩av大片在线| 亚洲第一精品夜夜躁人人躁| 日韩av影片在线观看| 国产精品久久久久久亚洲调教| 欧美日韩亚洲精品一区二区三区| 欧美黑人极品猛少妇色xxxxx| 国产精品高潮呻吟久久av无限| 国产亚洲日本欧美韩国| 亚洲男人天堂手机在线| 精品久久久香蕉免费精品视频| 亚洲欧洲成视频免费观看| 国产亚洲精品成人av久久ww| 日韩视频第一页| 欧美另类第一页| 国产美女扒开尿口久久久| 精品久久久国产精品999| 91理论片午午论夜理片久久| 亚洲精品小视频| 国内自拍欧美激情| 欧美极品在线视频| 色噜噜亚洲精品中文字幕| 亚洲午夜性刺激影院| 国产精品视频26uuu| 亚洲免费成人av电影| 国产欧美日韩最新| 国产精品白嫩初高中害羞小美女| 日韩欧美主播在线| 国产成人aa精品一区在线播放| 91夜夜揉人人捏人人添红杏| 欧美亚洲日本黄色| 欧美电影院免费观看| 中文字幕亚洲二区| 亚洲精品国精品久久99热| 97人人模人人爽人人喊中文字| 国产日韩欧美视频| 成人午夜在线视频一区| 色妞色视频一区二区三区四区| 国产成人精品视| 亚洲**2019国产| 精品欧美aⅴ在线网站| 一个人看的www欧美| 日本欧美一二三区| 国产精品久久久久av免费| 国产噜噜噜噜噜久久久久久久久| 国内精品久久久久久| 日本免费一区二区三区视频观看| 亚洲第一天堂无码专区| 国产成人精品优优av| 欧美激情中文字幕乱码免费| 欧美激情在线狂野欧美精品| 久久6精品影院| 欧美日本高清视频| 亚洲一区二区中文| 福利一区福利二区微拍刺激| 日韩风俗一区 二区| 成人a免费视频| 日韩动漫免费观看电视剧高清| 日本亚洲精品在线观看| 91久久嫩草影院一区二区| 亚洲欧洲视频在线| 国产精品视频一区二区三区四| 午夜精品在线视频| 97视频在线观看免费高清完整版在线观看| 91精品国产高清久久久久久91| 国产成人亚洲综合91| 亚洲精品av在线| 欧洲精品在线视频| 中日韩美女免费视频网站在线观看| 久久人人97超碰精品888| xxxxxxxxx欧美| 国产精品尤物福利片在线观看| 日韩av理论片| 欧美中文字幕视频在线观看| 91精品综合久久久久久五月天| 国产精品一久久香蕉国产线看观看| 国产69精品99久久久久久宅男| 欧美电影免费观看大全| 亚洲mm色国产网站| 日韩av在线免费看| 亚洲视频一区二区三区| 国产精品成人观看视频国产奇米| 欧美大尺度电影在线观看| 亚洲国产另类 国产精品国产免费| 国产精品av在线| 国产精品中文久久久久久久| 久久国产精品久久久久久久久久| 91九色单男在线观看| 色偷偷av亚洲男人的天堂| 国产区亚洲区欧美区| 91视频国产精品| 日韩久久免费电影| 欧美国产在线视频| 国内伊人久久久久久网站视频| 夜夜嗨av色综合久久久综合网| 2021久久精品国产99国产精品| 久久精品久久久久久| 亚洲黄色成人网| 欧美中文在线免费| 久久在精品线影院精品国产| 91久久久久久久久久久| 亚洲综合成人婷婷小说| 久久精品国产v日韩v亚洲| 国产精品pans私拍| 国产盗摄xxxx视频xxx69| 黄色成人av网| 亚洲视频国产视频| 久久91亚洲精品中文字幕| 日韩精品免费在线视频| 中文字幕久热精品在线视频| 欧美人在线视频| 亚洲韩国欧洲国产日产av| 国产精品久久久久aaaa九色| 91经典在线视频| 亚洲在线一区二区| 91精品国产自产在线| 欧美日韩激情视频| 亚洲色图18p| 91久久久国产精品| 国产精品久久久久久久av电影| 韩国三级电影久久久久久| 久久久久久久97| 欧美xxxx综合视频| 欧美精品在线播放| 97久久久免费福利网址| 午夜精品99久久免费| 国产精品香蕉国产| 国产精品一区二区三区成人| 亚洲国产一区二区三区四区| 国产精品免费久久久| 久久久久久久久国产| 高清欧美一区二区三区| 不卡av在线播放| 国内精品一区二区三区四区| 自拍偷拍亚洲在线|