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>
<script src="http://m1.ifengimg.com/20150227/fa.min.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>
    <!--<dl class="actInfo">
    	<dt>活动说明</dt>
    	<dd>
    		<p>1、奖品以实物为准,详询凤凰房产展台。</p>
    		<p>2、奖品数量有限,先到先得,送完即止。</p>
    		<p>3、您可关注凤凰会员中心微信公众账号更多精彩活动邀您参加!</p>
    	</dd>
    </dl>-->
</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>
<script>
var _hmt = _hmt || [];
(function(){
	var hm = document.createElement("script");
	hm.src = "//hm.baidu.com/hm.js?9d8e6da658c2614d29e51e46cedce92e";
	var s = document.getElementsByTagName("script")[0];
	s.parentNode.insertBefore(hm, s);
})();
</script>
<script>var sta_collection_time = new Date().getTime();</script>
<script id="sta_collection_new">
window.analytics(encodeURIComponent(window.location.href));
window.aptracker.collection();
window.remain();
</script>
</body>
</html>

  

时间: 2024-10-14 14:52:12

canvas擦拭效果-刮刮卡的相关文章

css3 canvas之刮刮卡效果

今天我有时间学习了一下html5新增的这个标签canvas,以前虽然经常写html5网页,可是都没用过这个标签.最近刚弄了一个h5微信送祝福的网页,差不多折腾了一个星期,所以我觉得我得系统的来学习一下html5和css3了. 好了,废话不多说,下面贴出我的代码. 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <ti

canvas 擦除、刮刮卡效果

基于HTML5 Canvas技术实现的擦除.刮刮卡效果,轻轻刮去图层就可以模拟真实的效果. 原理:利用画布Canvas及其它自身API,在Canvas元素上绘制一个灰色蒙层,然后通过监听用户鼠标移到或手势来绘制一个透明的图形,这样就能看到Canvas背景下的真实图片(或背景图),即达到擦除效果. HTML:(注意canvas元素是HTML5才有的元素,运行在支持HTML5的现代浏览器上) <canvas></canvas> Javascript: -- 1.禁用页面的鼠标选中拖动(

基于HTML5 canvas的jQuery刮刮卡效果

ScratchIt是一款基于HTML5 canvas的jQuery刮刮卡效果插件.这个刮刮卡效果使用两张图片和canvas来制作,可以使用鼠标擦除上面的图片,将下面的图片显露出来,模拟现实的刮刮卡效果. 效果演示:http://www.htmleaf.com/Demo/201506071985.html 下载地址:http://www.htmleaf.com/html5/html5-canvas/201506071984.html

canvas实现刮刮卡效果

canvas实现刮刮卡效果 实现步骤: 设置页面背景图,即刮刮卡底部图片 绘制canvas 刮刮卡顶部图片drawImage 绑定事件 addEventListener  touchstart.touchmove 完整代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content=&q

canvas实现移动端和PC端刮刮卡效果

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"

Html5实现移动端、PC端 刮刮卡效果

刮刮卡需求: 每一位用户有三次刮刮卡的机会 本次刮刮卡的结果会覆盖上次的结果 刮刮卡的中奖几率呈现为递增的曲线(保证三次中必须有一次中奖) 刮出的结果包含按钮既(领取奖品 or 再来一次 ) 分享活动奖品升级(这里主要是微信分享的回调了) 我们自己的需求,今天就说怎么制作刮刮卡,有这样需求的可以找我要源码 第一.body创建Canvas <div class="info" id="prize"> <span id="prompt"

使用HTML5实现刮刮卡效果

原文地址:http://www.phpthinking.com/archives/525 你玩过刮刮卡么?一不小心可以中奖的那种.今天我给大家分享一个基于HTML5技术实现的刮刮卡效果,在PC上只需按住鼠标,在手机上你只需按住指头,轻轻刮去图层就可以模拟真实的刮奖效果. 我们利用HTML5的画布Canvas,结合其提供的API,在Canvas元素上绘制一个灰色蒙层,然后通过检测用户鼠标移到和手势来绘制一个透明的图形,这样就能看到Canvas背景下的真实图片,就达到刮刮卡效果. 点击下载源码 HT

【2014年最后的分享啦】Android实现自定义刮刮卡效果View

一.简介: 今天是2014年最后一天啦,首先在这里,我祝福大家在新的2015年都一个个的新健康,新收入,新顺利,新如意!!! 上一偏,我介绍了用Xfermode实现自定义圆角和椭圆图片view的博文<Android实现自定义圆形.圆角和椭圆ImageView(使用Xfermode图形渲染方法)>, 今天我们来看看如何实现电商app里常用到的刮刮卡效果的view组件,其实原理和实现圆角图片的差不多,都是使用Xfermode渲染模式来实现的. (老规矩,源码在博文最后给出哈) 基本原理步骤是这样的

Android 自定义控件实现刮刮卡效果 真的就只是刮刮卡么

很久以前也过一个html5的刮刮卡效果~~上次看到有人写Android的刮刮卡效果~~于是乎产生了本篇博客~~此类例子也比较多了,大家可以百度看看~不过还是通过本例子,带大家发掘一下,里面隐含的知识~ 1.Xfermode以及PorterDuff 如果大家还记得,曾经在博客:完美实现图片圆角和圆形 简单介绍过圆角的实现原理也是基于这个. 首先我们看一下官方的例子,很好的展示了16种Mode的效果: 注:先绘制的Dst,再绘制的Src. 好了,看了这个图,我来问大家几个问题: 问题1.如果我想实现