麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript HTML5 Canvas實(shí)現(xiàn)圓盤抽獎功能

2019-11-20 10:16:40
字體:
供稿:網(wǎng)友

我們經(jīng)常參加各種電商優(yōu)惠活動,比如購買達(dá)到一定數(shù)額進(jìn)行抽獎活動,在比如微信抽獎,淘寶抽獎,迅雷賺錢寶圓盤抽獎活動等。這些抽獎活動部分就是由HTML5的Canvas來制作的,今天就為大家分享一下如何使用HTML5的Canvas來制作圓盤抽獎功能。老規(guī)矩,先看下效果圖吧:

再來看看Canvas的幾個主要api:

 

全部源代碼如下:

<!DOCTYPE html><html lang="zh-cn"><head><meta charset="UTF-8"><title>HTML5 Canvas圓盤抽獎應(yīng)用DEMO演示</title><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><style>*{padding: 0px;margin: 0px;font-size: 16px;font-family: "Microsoft YaHei";}.xttblog_box{width: 300px;height: 300px;margin: 100px auto;position: relative; }.xttblog_box canvas{position: absolute;}#xttblog{background-color: white;border-radius: 100%;}#xttblog01,#xttblog03{left: 50px;top: 50px;z-index: 30;}#xttblog02{left: 75px;top: 75px;z-index: 20;}#xttblog{-o-transform: transform 6s;-ms-transform: transform 6s;-moz-transform: transform 6s;  -webkit-transform: transform 6s;transition: transform 6s;-o-transform-origin: 50% 50%;-ms-transform-origin: 50% 50%;-moz-transform-origin: 50% 50%;-webkit-transform-origin: 50% 50%;transform-origin: 50% 50%;}.taoge_btn{width: 60px;height: 60px;left: 120px;top: 120px;border-radius: 100%;position: absolute;cursor: pointer;border: none;background: transparent;outline: none;z-index: 40;}</style><script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><script>$(document).ready(function(){ //旋轉(zhuǎn)角度 var angles; //可抽獎次數(shù) var clickNum = 5; //旋轉(zhuǎn)次數(shù) var rotNum = 0; //中獎公告 var notice = null; //轉(zhuǎn)盤初始化 var color = ["#626262","#787878","rgba(0,0,0,0.5)","#DCC722","white","#FF4350"]; var info = ["謝謝參與"," 1000"," 10"," 500"," 100"," 4999"," 1"," 20"]; var info1 = ['再接再厲','  元','  元',' 淘金幣','  元',' 淘金幣','  元',' 淘金幣'] canvasRun(); $('#tupBtn').bind('click',function(){  if (clickNum >= 1) {   //可抽獎次數(shù)減一   clickNum = clickNum-1;   //轉(zhuǎn)盤旋轉(zhuǎn)   runCup();   //轉(zhuǎn)盤旋轉(zhuǎn)過程“開始抽獎”按鈕無法點(diǎn)擊   $('#tupBtn').attr("disabled", true);   //旋轉(zhuǎn)次數(shù)加一   rotNum = rotNum + 1;   //“開始抽獎”按鈕無法點(diǎn)擊恢復(fù)點(diǎn)擊   setTimeout(function(){    alert(notice);    $('#tupBtn').removeAttr("disabled", true);   },6000);  }  else{   alert("親,抽獎次數(shù)已用光!");  } });  //轉(zhuǎn)盤旋轉(zhuǎn) function runCup(){  probability();  var degValue = 'rotate('+angles+'deg'+')';  $('#xttblog').css('-o-transform',degValue);   //Opera  $('#xttblog').css('-ms-transform',degValue);   //IE瀏覽器  $('#xttblog').css('-moz-transform',degValue);   //Firefox  $('#xttblog').css('-webkit-transform',degValue);  //Chrome和Safari  $('#xttblog').css('transform',degValue); }  //各獎項(xiàng)對應(yīng)的旋轉(zhuǎn)角度及中獎公告內(nèi)容 function probability(){  //獲取隨機(jī)數(shù)  var num = parseInt(Math.random()*(7 - 0 + 0) + 0);  //概率  if ( num == 0 ) {   angles = 2160 * rotNum + 1800;   notice = info[0] + info1[0];  }  //概率  else if ( num == 1 ) {   angles = 2160 * rotNum + 1845;   notice = info[7] + info1[7];  }  //概率  else if ( num == 2 ) {   angles = 2160 * rotNum + 1890;   notice = info[6] + info1[6];  }  //概率  else if ( num == 3 ) {   angles = 2160 * rotNum + 1935;   notice = info[5] + info1[5];  }  //概率  else if ( num == 4 ) {   angles = 2160 * rotNum + 1980;   notice = info[4] + info1[4];  }  //概率  else if ( num == 5 ) {   angles = 2160 * rotNum + 2025;   notice = info[3] + info1[3];  }  //概率  else if ( num == 6 ) {   angles = 2160 * rotNum + 2070;   notice = info[2] + info1[2];  }  //概率  else if ( num == 7 ) {   angles = 2160 * rotNum + 2115;   notice = info[1] + info1[1];  } }  //繪制轉(zhuǎn)盤 function canvasRun(){  var canvas=document.getElementById('xttblog');  var canvas01=document.getElementById('xttblog01');  var canvas03=document.getElementById('xttblog03');  var canvas02=document.getElementById('xttblog02');  var ctx=canvas.getContext('2d');  var ctx1=canvas01.getContext('2d');  var ctx3=canvas03.getContext('2d');  var ctx2=canvas02.getContext('2d');  createCircle();  createCirText();  initPoint();    //外圓  function createCircle(){   var startAngle = 0;//扇形的開始弧度   var endAngle = 0;//扇形的終止弧度   //畫一個8等份扇形組成的圓形   for (var i = 0; i< 8; i++){    startAngle = Math.PI*(i/4-1/8);    endAngle = startAngle+Math.PI*(1/4);    ctx.save();    ctx.beginPath();    ctx.arc(150,150,100, startAngle, endAngle, false);    ctx.lineWidth = 120;    if (i%2 == 0) {     ctx.strokeStyle = color[0];    }else{     ctx.strokeStyle = color[1];    }    ctx.stroke();    ctx.restore();   }  }   //各獎項(xiàng)  function createCirText(){    ctx.textAlign='start';   ctx.textBaseline='middle';   ctx.fillStyle = color[3];   var step = 2*Math.PI/8;   for ( var i = 0; i < 8; i++) {    ctx.save();    ctx.beginPath();    ctx.translate(150,150);    ctx.rotate(i*step);    ctx.font = " 20px Microsoft YaHei";    ctx.fillStyle = color[3];    ctx.fillText(info[i],-30,-115,60);    ctx.font = " 14px Microsoft YaHei";    ctx.fillText(info1[i],-30,-95,60);    ctx.closePath();    ctx.restore();   }  }   function initPoint(){   //箭頭指針   ctx1.beginPath();   ctx1.moveTo(100,24);   ctx1.lineTo(90,62);   ctx1.lineTo(110,62);   ctx1.lineTo(100,24);   ctx1.fillStyle = color[5];   ctx1.fill();   ctx1.closePath();   //中間小圓   ctx3.beginPath();   ctx3.arc(100,100,40,0,Math.PI*2,false);   ctx3.fillStyle = color[5];   ctx3.fill();   ctx3.closePath();   //小圓文字   ctx3.font = "Bold 20px Microsoft YaHei";   ctx3.textAlign='start';   ctx3.textBaseline='middle';   ctx3.fillStyle = color[4];   ctx3.beginPath();   ctx3.fillText('開始',80,90,40);   ctx3.fillText('抽獎',80,110,40);   ctx3.fill();   ctx3.closePath();   //中間圓圈   ctx2.beginPath();   ctx2.arc(75,75,75,0,Math.PI*2,false);   ctx2.fillStyle = color[2];   ctx2.fill();   ctx2.closePath();  } }});</script></head><body><div class="xttblog_box"> <canvas id="xttblog" width="300px" height="300px">抱歉!瀏覽器不支持。</canvas> <canvas id="xttblog01" width="200px" height="200px">抱歉!瀏覽器不支持。</canvas> <canvas id="xttblog03" width="200px" height="200px">抱歉!瀏覽器不支持。</canvas> <canvas id="xttblog02" width="150px" height="150px">抱歉!瀏覽器不支持。</canvas> <button id="tupBtn" class="taoge_btn"></button></div><!-- 更改系統(tǒng)默認(rèn)彈窗 --><script type="text/javascript">window.alert = function(str){ var shield = document.createElement("DIV"); shield.id = "shield"; shield.style.position = "absolute"; shield.style.left = "50%"; shield.style.top = "50%"; shield.style.width = "280px"; shield.style.height = "150px"; shield.style.marginLeft = "-140px"; shield.style.marginTop = "-110px"; shield.style.zIndex = "25"; var alertFram = document.createElement("DIV"); alertFram.id="alertFram"; alertFram.style.position = "absolute"; alertFram.style.width = "280px"; alertFram.style.height = "150px"; alertFram.style.left = "50%"; alertFram.style.top = "50%"; alertFram.style.marginLeft = "-140px"; alertFram.style.marginTop = "-110px"; alertFram.style.textAlign = "center"; alertFram.style.lineHeight = "150px"; alertFram.style.zIndex = "300"; strHtml = "<ul style=/"list-style:none;margin:0px;padding:0px;width:100%/">/n"; strHtml += " <li style=/"background:#626262;text-align:left;padding-left:20px;font-size:14px;font-weight:bold;height:25px;line-height:25px;border:1px solid #F9CADE;color:white/">[中獎提醒]</li>/n"; strHtml += " <li style=/"background:#787878;text-align:center;font-size:12px;height:95px;line-height:95px;border-left:1px solid #F9CADE;border-right:1px solid #F9CADE;color:#DCC722/">"+str+"</li>/n"; strHtml += " <li style=/"background:#626262;text-align:center;font-weight:bold;height:30px;line-height:25px; border:1px solid #F9CADE;/"><input type=/"button/" value=/"確 定/" onclick=/"doOk()/" style=/"width:80px;height:20px;background:#626262;color:white;border:1px solid white;font-size:14px;line-height:20px;outline:none;margin-top: 4px/"/></li>/n"; strHtml += "</ul>/n"; alertFram.innerHTML = strHtml; document.body.appendChild(alertFram); document.body.appendChild(shield); this.doOk = function(){  alertFram.style.display = "none";  shield.style.display = "none"; } alertFram.focus(); document.body.onselectstart = function(){return false;};}</script></body></html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

原文地址:http://www.xttblog.com/?p=399

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产91一区二区三区 | 久久久三区| 亚洲第一成人在线 | 久久激情国产 | 黄色网址进入 | 性欧美极品xxxx欧美一区二区 | 一级片999 | 羞羞答答影院 | 九九热色 | 亚洲精品午夜电影 | 97se亚洲综合在线韩国专区福利 | japanese hot milf free av| 久久久www免费看片 亚洲综合视频一区 | 亚洲成人网一区 | 亚洲视频精品在线 | 国产成人高清在线观看 | 孕妇体内谢精满日本电影 | 午夜人体 | 逼片视频 | 亚洲第一成人久久网站 | 中文字幕亚洲欧美 | 中国成人在线视频 | 久久精品毛片 | 中国3xxxx | 综合网天天色 | cosplay裸体福利写真 | 性 毛片 | 特黄一区二区三区 | 国产小视频一区 | 亚洲欧美日韩久久精品第一区 | 欧美wwwsss9999| 亚洲一区成人在线 | 特片网久久 | 国产人成精品综合欧美成人 | 国产一级一级片 | 一区二区久久精品66国产精品 | 一级美女大片 | 亚洲性在线视频 | 国产成人精品一区二区仙踪林 | 国产成人av在线播放 | 精国产品一区二区三区 |