天天看点

html canvas抽奖,HTML5 Canvas圆盘抽奖应用(适用于Vue项目)

HTML5 Canvas圆盘抽奖应用DEMO演示

}.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;

}

varangles;//旋转次数

varrotNum= 0;//中奖公告

varnotice= null;//转盘初始化各样式颜色

varcolor=["#ffefbf","#ffbb04","#e72c2c","#DCC722","#f4a005","#cb1418"];//后台获取奖品替换数据

varinfo=["1","2","3","4","5","6"];

canvasRun();

$('#tupBtn').bind('click',function() {//转盘旋转

runCup();//转盘旋转过程“开始抽奖”按钮无法点击

$('#tupBtn').attr("disabled",true);//“开始抽奖”按钮无法点击恢复点击

setTimeout(function() {

alert('中奖拉')

$('#tupBtn').removeAttr("disabled",true);

},6000);

});//转盘旋转

functionrunCup() {varnum= null

//获取随机数0-5 取回获奖数据下标代替 此处获取获奖数据使用异步方法

varnum=parseInt(Math.random()*(5 - 0 + 0)+ 0);//记录旋转的次数,依次叠加旋转度数,防止往回倒转 transform属性的值必须依次增加,否则会发生倒转

rotNum=rotNum+ 1

if(num!== null) {//旋转角度 = 旋转6圈(2160度)* 已经旋转的次数 + 最少旋转的圈数(5圈)+ 每个奖品下标对应的角度

angles= 2160 *rotNum+ 1800 + 360 /info.length*(info.length-num);

}else{

angles= 2160 *rotNum+ 1800}vardegValue= 'rotate(' +angles+ 'deg' + ')';

$('#xttblog').css('transform', degValue);//如果没有获取到获奖数据继续转动

if(num=== null) {

runCup();

}

}//绘制转盘

functioncanvasRun() {varcanvas=document.getElementById('xttblog');varcanvas01=document.getElementById('xttblog01');varcanvas03=document.getElementById('xttblog03');varcanvas02=document.getElementById('xttblog02');varctx=canvas.getContext('2d');varctx1=canvas01.getContext('2d');varctx3=canvas03.getContext('2d');varctx2=canvas02.getContext('2d');

createCircle();

createCirText();//绘制文字

initPoint();//绘制指针

//外圆

functioncreateCircle() {varstartAngle= 0;//扇形的开始弧度

varendAngle= 0;//扇形的终止弧度

//画一个等份扇形组成的圆形

for(vari= 0; i

startAngle=Math.PI*(i/(info.length/ 2)- 2 /info.length);

endAngle=startAngle+Math.PI*(1 /(info.length/ 2));

ctx.save();//保存备份

ctx.beginPath();//绘制两条线

ctx.arc(150,150,100, startAngle, endAngle,false);//绘制圆

ctx.lineWidth= 120;if(i% 2 == 0) {//绘制颜色

ctx.strokeStyle=color[1];

}else{

ctx.strokeStyle=color[0];

}

ctx.stroke();

ctx.restore();

}

}//各奖项

functioncreateCirText() {

ctx.textAlign= 'start';

ctx.textBaseline= 'middle';

ctx.fillStyle=color[3];varstep= 2 *Math.PI/info.length;for(vari= 0; i< 6; 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,-100,60);//书写转盘文字

ctx.font= "14px Microsoft YaHei";

ctx.closePath();

ctx.restore();

}

}//箭头指针

functioninitPoint() {//箭头指针

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();//中间圆圈

ctx2.beginPath();

ctx2.arc(75,75,50,0, Math.PI* 2,false);//创建一个圆

ctx2.fillStyle=color[2];//颜色

ctx2.fill();

ctx2.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();

}

}

});

抱歉!浏览器不支持。

抱歉!浏览器不支持。

抱歉!浏览器不支持。

抱歉!浏览器不支持。