canvas擦拭效果-刮刮卡

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>刮刮卡</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<style>
body,div{padding: 0; margin: 0;}
.wrap {
    width: 320px;
    height: 400px;
    background: url('http://s1.ifengimg.com/2015/05/27/14a99b65f24474a81530c6f642c1ef4f.jpg') 0 0 no-repeat;
    background-size: 100% 100%;
}
</style>
</head>
<body>
<div id="con" class="wrap">
    <canvas id="myCanvas" width="320" height="400"></canvas>
</div>
<script>
var myCanvas = document.getElementById('myCanvas');
var gray = myCanvas.getContext('2d');
gray.beginPath();
gray.fillStyle = "#999";
gray.fillRect(0,0,320,400);
gray.closePath();
gray.globalCompositeOperation="destination-out";

myCanvas.addEventListener('touchmove', function(e){
    e.preventDefault();
    gray.beginPath();
    gray.fillStyle = "#f00";
    gray.arc(e.targetTouches[0].clientX, e.targetTouches[0].clientY, 20, 0, Math.PI*2);
    gray.fill();
    gray.closePath();
}, false);

myCanvas.addEventListener('touchend', function(e){
    e.preventDefault();
    var num = 0;
    var datas = gray.getImageData(0,0,320,400);//画布中像素点属性
    for (var i = 0; i < datas.data.length; i++) {
        if (datas.data[i] == 0) {
            num++;
        };
    };
    if (num >= datas.data.length * 0.7) {
        gray.fillRect(0,0,320,400);
    };
}, false);
</script>
</body>
</html>

TJ

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0'/>
<link rel="stylesheet" href="http://s0.ifengimg.com/2016/03/30/style_e14bff55.css">
<script src="http://s0.ifengimg.com/static/js/jquery-1.7.2.min_c4de8813.js"></script>
</head>
<body>
<section>
    <h1 class="scrape-title imgBox">
        <img src="http://s0.ifengimg.com/2016/03/29/sec2_tt_5b5367e8.png">
    </h1>
    <div class="award">
    	<div class="canvas_bg_1" style="display: none;"><img src="http://s0.ifengimg.com/2016/03/29/cbg1_0b525d45.png" /></div>
    	<div class="canvas_bg_2"><img src="http://s0.ifengimg.com/2016/03/29/cbg2_79dd3c21.png" /></div>
    	<div class="award-wrap">
    		<div class="award-txt">
	    		<h4 style="display: none;"><&$gift&></h4>
	    		<p style="display: none;">凭此页面截图详询工作人员领取</p>
	    		<canvas id="awardCanvas"></canvas>
	    	</div>
    	</div>
    </div>
</section>
<script>
$("html").css("fontSize",$(window).width()/64 + "px");//1rem = 640 / 64
$(document).ready(function(){
	var awardCanvas = document.getElementById('awardCanvas');
	var img = new Image();
	img.src = $(".canvas_bg_2 img").attr("src");
	var timer = setInterval(function(){
        if(img.complete){
            clearInterval(timer);
            img = null;
            var offsetTop = $(".award-txt").offset().top;
			var offsetLeft = $(".award-txt").offset().left;
			var w = $(".award-txt").width();
			var h = $(".award-txt").height();
			if(awardCanvas){
				awardCanvas.width = w;
				awardCanvas.height = h;
				$(".award-txt h4").show();
				$(".award-txt p").show();
				var gray = awardCanvas.getContext('2d');
				gray.beginPath();
				gray.fillStyle = "#d3d3d3";
				gray.fillRect(0,0,w,h);
				gray.closePath();
				gray.globalCompositeOperation="destination-out";
				document.addEventListener('touchstart', function(e){
					e.preventDefault();
					awardCanvas.addEventListener('touchmove', function(e){
					    e.preventDefault();
					    gray.beginPath();
					    //gray.fillStyle = "#f00";
					    gray.arc(e.targetTouches[0].clientX - offsetLeft, e.targetTouches[0].clientY - offsetTop, 20, 0, Math.PI*2);
					    gray.fill();
					    gray.closePath();
					}, false);
				
					awardCanvas.addEventListener('touchend', function(e){
					    e.preventDefault();
					    var num = 0;
					    var datas = gray.getImageData(0,0,w,h);//画布中像素点属性
					    for (var i = 0; i < datas.data.length; i++) {
					        if (datas.data[i] == 0) {
					            num++;
					        };
					    };
					    if (num >= datas.data.length * 0.4) {
					        gray.fillRect(0,0,w,h);
					        $('#awardCanvas').hide();
					        $('.canvas_bg_2').hide();
					        $('.canvas_bg_1').show();
					        
					    };
					}, false);
				});
			}
        }
    }, 50);		
});

</script>
</body>
</html>

  

posted @ 2016-05-12 13:47  xiangcy  阅读(176)  评论(0)    收藏  举报