1. 程式人生 > >canvas畫布實現刮刮樂刮獎

canvas畫布實現刮刮樂刮獎

<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		#cv{
			/*border:1px solid;*/
			position: absolute;
			left:35px;
			top:175px;
		}
		div{
			width: 200px;
			height: 100px;
			font-size:30px;
			line-height: 100px;
			text-align: center;
			position:absolute;
			left:50px;
			top:185px;
		}
		img{
			width: 300px;
			height: 500px;
		}
	</style>
</head>
<body>
	<img src="./cark.png">
	<div id="text"></div>
	<canvas id="cv" width="247" height="120"></canvas>
</body>
	<script type="text/javascript">
		//定義陣列,在隨機抽獎做準備
		var arr =["謝謝惠顧","特等獎","張國榮的吻","美女50","豪車100","優酷會員1個月","風油精一打"];
		var  index = parseInt(Math.random()*arr.length);
		text.innerHTML=arr[index];
		console.log(index);
		var ctx = cv.getContext("2d");
		ctx.beginPath();
		//只有灰色區域是畫布,紅色的圖片是新增到body中的
		ctx.fillStyle="gray";
		ctx.fillRect(0,0,250,120);
		//顯示源影象之外的目標影象,此刻灰色區域就是目標影象,在mousemove中繪製的圓為源影象
		ctx.globalCompositeOperation="destination-out";
		ctx.beginPath();
		cv.onmousedown = function(e){	
			document.onmousemove = function(e){
				console.log(222);
				var e = e || window.event;
				//e.clientX是獲取的關於瀏覽器可視視窗的滑鼠點座標
				//求關於灰色區域的滑鼠點位置,就需要減去灰色區域的offsetLeft以及offsetTop
				var x = e.clientX-cv.offsetLeft;
				var y = e.clientY-cv.offsetTop;
				ctx.moveTo(x,y);
				console.log(x,y);
				//繪製源圖片,為圓形
				ctx.arc(x,y,10,0,Math.PI*2,false);
				ctx.fill();	
				//getImageData執行在伺服器環境下:能得到一個物件,物件中的data屬性儲存了關於引數中的四個值,
				//從哪裡開始獲取獲取多大的影象的每個點的畫素值,四個為一組,分別代表rgba
				//獲取每次移動的時候畫布上面的所有畫素點,當每第四個值為0時,就表示該畫素點為透明,當所有判斷
				//透明度的值有百分之60之上,就清空畫布,將刮獎區完全顯示出來
				var mydata = ctx.getImageData(0,0,cv.width,cv.height);
						var data = mydata.data;
						var count = 0;
						for(var i=0;i<data.length;i+=4){
							console.log(111);
							var a = data[i+3];
							if(a==0){
								count++;
								console.log(count);
							}
							if(count>=data.length/4*0.6){
								ctx.clearRect(0,0,cv.width,cv.height);
							}
						}		
			}
		}
		
	</script>
</html>