gusucode.com > zazhi 微信朋友圈小游戏源码程序 > zazhi/success/js/lottery.min.js

    function Lottery(c,f,d,b,a,e){this.conNode=c;this.background=null;this.backCtx=null;this.mask=null;this.maskCtx=null;this.lottery=null;this.lotteryType="image";this.cover=f||"#000";this.coverType=d;this.pixlesData=null;this.width=b;this.height=a;this.lastPosition=null;this.drawPercentCallback=e;this.vail=false}Lottery.prototype={createElement:function(c,a){var d=document.createElement(c);for(var b in a){d.setAttribute(b,a[b])}return d},getTransparentPercent:function(l,c,k){var b=l.getImageData(0,0,c,k),d=b.data,e=[];for(var g=0,f=d.length;g<f;g+=4){var h=d[g+3];if(h<128){e.push(g)}}return(e.length/(d.length/4)*100).toFixed(2)},resizeCanvas:function(b,c,a){b.width=c;b.height=a;b.getContext("2d").clearRect(0,0,c,a)},resizeCanvas_w:function(b,c,a){b.width=c;b.height=a;b.getContext("2d").clearRect(0,0,c,a);if(this.vail){this.drawLottery()}else{this.drawMask()}},drawPoint:function(a,c,b){this.maskCtx.beginPath();this.maskCtx.arc(a,c,30,0,Math.PI*2);this.maskCtx.fill();this.maskCtx.beginPath();this.maskCtx.lineWidth=60;this.maskCtx.lineCap=this.maskCtx.lineJoin="round";if(this.lastPosition){this.maskCtx.moveTo(this.lastPosition[0],this.lastPosition[1])}this.maskCtx.lineTo(a,c);this.maskCtx.stroke();this.lastPosition=[a,c];this.mask.style.zIndex=(this.mask.style.zIndex==20)?21:20},bindEvent:function(){var e=this;var c=(/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase()));var b=c?"touchstart":"mousedown";var d=c?"touchmove":"mousemove";if(!c){var a=false;e.conNode.addEventListener("mouseup",function(g){g.preventDefault();a=false;var f=e.getTransparentPercent(e.maskCtx,e.width,e.height);if(f>=50){if(typeof(e.drawPercentCallback)=="function"){e.drawPercentCallback()}}},false)}else{e.conNode.addEventListener("touchmove",function(f){if(a){f.preventDefault()}if(f.cancelable){f.preventDefault()}else{window.event.returnValue=false}},false);e.conNode.addEventListener("touchend",function(g){a=false;var f=e.getTransparentPercent(e.maskCtx,e.width,e.height);if(f>=40){if(typeof(e.drawPercentCallback)=="function"){e.drawPercentCallback()}}},false)}this.mask.addEventListener(b,function(g){g.preventDefault();a=true;var f=(c?g.touches[0].pageX:g.pageX||g.x);var h=(c?g.touches[0].pageY:g.pageY||g.y);e.drawPoint(f,h,a)},false);this.mask.addEventListener(d,function(g){g.preventDefault();if(!a){return false}g.preventDefault();var f=(c?g.touches[0].pageX:g.pageX||g.x);var h=(c?g.touches[0].pageY:g.pageY||g.y);e.drawPoint(f,h,a)},false)},drawLottery:function(){if(this.lotteryType=="image"){var b=new Image(),c=this;b.onload=function(){this.width=c.width;this.height=c.height;c.resizeCanvas(c.background,c.width,c.height);c.backCtx.drawImage(this,0,0,c.width,c.height);c.drawMask()};b.src=this.lottery}else{if(this.lotteryType=="text"){this.width=this.width;this.height=this.height;this.resizeCanvas(this.background,this.width,this.height);this.backCtx.save();this.backCtx.fillStyle="#FFF";this.backCtx.fillRect(0,0,this.width,this.height);this.backCtx.restore();this.backCtx.save();var a=30;this.backCtx.font="Bold "+a+"px Arial";this.backCtx.textAlign="center";this.backCtx.fillStyle="#F60";this.backCtx.fillText(this.lottery,this.width/2,this.height/2+a/2);this.backCtx.restore();this.drawMask()}}},drawMask:function(){if(this.coverType=="color"){this.maskCtx.fillStyle=this.cover;this.maskCtx.fillRect(0,0,this.width,this.height);this.maskCtx.globalCompositeOperation="destination-out"}else{if(this.coverType=="image"){var a=new Image(),b=this;a.onload=function(){b.resizeCanvas(b.mask,b.width,b.height);var d=(/android/i.test(navigator.userAgent.toLowerCase()));b.maskCtx.globalAlpha=0.98;b.maskCtx.drawImage(this,0,0,this.width,this.height,0,0,b.width,b.height);var e=50;var c=" ";var f=b.maskCtx.createLinearGradient(0,0,b.width,0);f.addColorStop("0","#fff");f.addColorStop("1.0","#000");b.maskCtx.font="Bold "+e+"px Arial";b.maskCtx.textAlign="left";b.maskCtx.fillStyle=f;b.maskCtx.fillText(c,b.width/2-b.maskCtx.measureText(c).width/2,100);b.maskCtx.globalAlpha=1;b.maskCtx.globalCompositeOperation="destination-out"};a.src=this.cover}}},init:function(a,b){if(a){this.lottery=a;this.lottery.width=this.width;this.lottery.height=this.height;this.lotteryType=b||"image";this.vail=true}if(this.vail){this.background=this.background||this.createElement("canvas",{style:"position:fixed;left:50%;top:0;width:640px;margin-left:-320px;height:100%;background-color:transparent;"})}this.mask=this.mask||this.createElement("canvas",{style:"position:fixed;left:50%;top:0;width:640px;margin-left:-320px;height:100%;background-color:transparent;"});this.mask.style.zIndex=20;if(!this.conNode.innerHTML.replace(/[\w\W]| /g,"")){if(this.vail){this.conNode.appendChild(this.background)}this.conNode.appendChild(this.mask);this.bindEvent()}if(this.vail){this.backCtx=this.backCtx||this.background.getContext("2d")}this.maskCtx=this.maskCtx||this.mask.getContext("2d");if(this.vail){this.drawLottery()}else{this.drawMask()}var c=this;window.addEventListener("resize",function(){c.width=document.documentElement.clientWidth;
c.height=document.documentElement.clientHeight;c.resizeCanvas_w(c.mask,c.width,c.height)},false)}};