<!DOCTYPE html>
<meta lang="en">
<meta>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no"></meta>
<title>刮刮卡优化</title>
<style>
*{
margin: 0;
padding: 0;
}
body,html {
height: 100%;
overflow: hidden;
}
#outer,ul,ul>li {
height: 100%;
}
ul>li{
background: url(./bg3.png);
background-size: (100%,100%);
}
#test{
position: absolute;
left: 0;
top: 0;
transition: 1s;
}
</style>
</head>
<body>
<div id="outer">
<canvas id="test" width="300" height="300">
<span>您的浏览器版本过低,请更换IE-9以上,或使用chrome等其他浏览器</span>
</canvas>
<ul>
<li></li>
</ul>
</div>
<script type="text/javascript">
window.onload = function(){
/** @type {HTMLCanvasElement} */
//1.获取画布
var canvas = document.querySelector('#test');
canvas.width = document.documentElement.clientWidth;
canvas.height = document.documentElement.clientHeight;
if (canvas.getContext) {
//2.获取画笔
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = './bg.png';
img.onload = function(){
draw();
}
function draw(){
var flag = 0;
ctx.drawImage(img,0,0,canvas.width,canvas.height);
canvas.addEventListener('touchstart',function(ev){
ev = ev||event; //兼容
var touchC = ev.changedTouches[0]; //changedTouches代表手指列表
var x = touchC.clientX - canvas.offsetLeft;
var y = touchC.clientY - canvas.offsetTop;
ctx.lineWidth = 40;
ctx.lineCap = 'round';
ctx.lineJoin = 'round';
ctx.save();
ctx.globalCompositeOperation = 'destination-out';
ctx.beginPath();
ctx.moveTo(x,y); //画一条直线,不画圆,圆会出现bug
ctx.lineTo(x+1,y+1)
ctx.stroke();
ctx.restore();
})
canvas.addEventListener('touchmove',function(ev){
ev = ev||event; //兼容
var touchC = ev.changedTouches[0]; //changedTouches代表手指列表
var x = touchC.clientX - canvas.offsetLeft;
var y = touchC.clientY - canvas.offsetTop;
ctx.save();
ctx.globalCompositeOperation = 'destination-out';
/*ctx.arc(x,y,20,0,360*Math.PI/180);*/
ctx.lineTo(x,y);
ctx.stroke();
ctx.restore();
})
canvas.addEventListener('touchend',function(){
var imageData = ctx.getImageData(0,0,canvas.width,canvas.height);
var allPx = imageData.width * imageData.height;
for(var i=0; i<allPx; i++){
if(imageData.data[4*i+3]===0){
flag++;
}
}
if(flag >= allPx / 2){
canvas.style.opacity = 0;
}
})
canvas.addEventListener('transitionend',function(){
this.remove();
})
}
}
}
</script>
</body>
</html>