Skip to content

Instantly share code, notes, and snippets.

@seven-lh
Created August 2, 2017 15:19
Show Gist options
  • Select an option

  • Save seven-lh/88f56bd84ed9ed8c16207401e785aeda to your computer and use it in GitHub Desktop.

Select an option

Save seven-lh/88f56bd84ed9ed8c16207401e785aeda to your computer and use it in GitHub Desktop.
JS Bin // source http://jsbin.com/luwumep
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div id="out">
<canvas id="canvas"></canvas>
</div>
<script id="jsbin-javascript">
var bodyStyle = document.body.style;
bodyStyle.mozUserSelect = 'none';
bodyStyle.webkitUserSelect = 'none';
//console.log(document.body);
var img = new Image();
var canvas = document.getElementById('canvas');
canvas.style.backgroundColor = 'transparent';
canvas.style.position = 'absoulte'
var imgs = ['http://www.funchannel.net/wp-content/uploads/2013/01/korean-cosplay-vocaloid.jpg','http://images6.fanpop.com/image/photos/33900000/Madoka-Magica-cosplay-anime-33975797-500-747.jpg'];
var num = Math.floor(Math.random()*2);
img.src = imgs[num];
console.log(img);
img.addEventListener('load',function(e){
var ctx;
var w = img.width;
var h = img.height;
var offsetX = canvas.offsetLeft,
offsetY = canvas.offsetTop;
var mousedown = false;
function layer(ctx){
ctx.fillStyle = 'gray';
ctx.fillRect(0,0,w,h);
}
function eventDown(e){
e.preventDefault();
mousedown = true;
}
function eventUp(e){
e.preventDefault();
mousedown= false;
var data=ctx.getImageData(0,0,w,h).data;
for(var i=0,j=0;i<data.length;i+=4){
if(data[i] && data[i+1] && data[i+2] && data[i+3]){
j++;
}
}
if(j<=w*h*0.8){
alert('ok ' + num);
}
}
function eventMove(e){
e.preventDefault();
if(mousedown){
if(e.changedTouches){
e=e.changedTouches[e.changedTouches.length-1];
}
var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0,
y = (e.clientY +document.body.scrollTop || e.pageY) - offsetY || 0;
with(ctx){
beginPath()
arc(x,y,10,0,Math.PI *2);
fill();
}
}
}
canvas.width=w;
canvas.height=h;
canvas.style.backgroundImage='url('+img.src+')';
ctx=canvas.getContext('2d');
ctx.fillStyle='transparent';
ctx.fillRect(0, 0, w, h);//绘制矩形
layer(ctx);
ctx.globalCompositeOperation = 'destination-out';
canvas.addEventListener('touchstart', eventDown);
canvas.addEventListener('touchend', eventUp);
canvas.addEventListener('touchmove', eventMove);
canvas.addEventListener('mousedown', eventDown);
canvas.addEventListener('mouseup', eventUp);
canvas.addEventListener('mousemove', eventMove);
})
</script>
<script id="jsbin-source-javascript" type="text/javascript">var bodyStyle = document.body.style;
bodyStyle.mozUserSelect = 'none';
bodyStyle.webkitUserSelect = 'none';
//console.log(document.body);
var img = new Image();
var canvas = document.getElementById('canvas');
canvas.style.backgroundColor = 'transparent';
canvas.style.position = 'absoulte'
var imgs = ['http://www.funchannel.net/wp-content/uploads/2013/01/korean-cosplay-vocaloid.jpg','http://images6.fanpop.com/image/photos/33900000/Madoka-Magica-cosplay-anime-33975797-500-747.jpg'];
var num = Math.floor(Math.random()*2);
img.src = imgs[num];
console.log(img);
img.addEventListener('load',function(e){
var ctx;
var w = img.width;
var h = img.height;
var offsetX = canvas.offsetLeft,
offsetY = canvas.offsetTop;
var mousedown = false;
function layer(ctx){
ctx.fillStyle = 'gray';
ctx.fillRect(0,0,w,h);
}
function eventDown(e){
e.preventDefault();
mousedown = true;
}
function eventUp(e){
e.preventDefault();
mousedown= false;
var data=ctx.getImageData(0,0,w,h).data;
for(var i=0,j=0;i<data.length;i+=4){
if(data[i] && data[i+1] && data[i+2] && data[i+3]){
j++;
}
}
if(j<=w*h*0.8){
alert('ok ' + num);
}
}
function eventMove(e){
e.preventDefault();
if(mousedown){
if(e.changedTouches){
e=e.changedTouches[e.changedTouches.length-1];
}
var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0,
y = (e.clientY +document.body.scrollTop || e.pageY) - offsetY || 0;
with(ctx){
beginPath()
arc(x,y,10,0,Math.PI *2);
fill();
}
}
}
canvas.width=w;
canvas.height=h;
canvas.style.backgroundImage='url('+img.src+')';
ctx=canvas.getContext('2d');
ctx.fillStyle='transparent';
ctx.fillRect(0, 0, w, h);//绘制矩形
layer(ctx);
ctx.globalCompositeOperation = 'destination-out';
canvas.addEventListener('touchstart', eventDown);
canvas.addEventListener('touchend', eventUp);
canvas.addEventListener('touchmove', eventMove);
canvas.addEventListener('mousedown', eventDown);
canvas.addEventListener('mouseup', eventUp);
canvas.addEventListener('mousemove', eventMove);
})</script></body>
</html>
var bodyStyle = document.body.style;
bodyStyle.mozUserSelect = 'none';
bodyStyle.webkitUserSelect = 'none';
//console.log(document.body);
var img = new Image();
var canvas = document.getElementById('canvas');
canvas.style.backgroundColor = 'transparent';
canvas.style.position = 'absoulte'
var imgs = ['http://www.funchannel.net/wp-content/uploads/2013/01/korean-cosplay-vocaloid.jpg','http://images6.fanpop.com/image/photos/33900000/Madoka-Magica-cosplay-anime-33975797-500-747.jpg'];
var num = Math.floor(Math.random()*2);
img.src = imgs[num];
console.log(img);
img.addEventListener('load',function(e){
var ctx;
var w = img.width;
var h = img.height;
var offsetX = canvas.offsetLeft,
offsetY = canvas.offsetTop;
var mousedown = false;
function layer(ctx){
ctx.fillStyle = 'gray';
ctx.fillRect(0,0,w,h);
}
function eventDown(e){
e.preventDefault();
mousedown = true;
}
function eventUp(e){
e.preventDefault();
mousedown= false;
var data=ctx.getImageData(0,0,w,h).data;
for(var i=0,j=0;i<data.length;i+=4){
if(data[i] && data[i+1] && data[i+2] && data[i+3]){
j++;
}
}
if(j<=w*h*0.8){
alert('ok ' + num);
}
}
function eventMove(e){
e.preventDefault();
if(mousedown){
if(e.changedTouches){
e=e.changedTouches[e.changedTouches.length-1];
}
var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0,
y = (e.clientY +document.body.scrollTop || e.pageY) - offsetY || 0;
with(ctx){
beginPath()
arc(x,y,10,0,Math.PI *2);
fill();
}
}
}
canvas.width=w;
canvas.height=h;
canvas.style.backgroundImage='url('+img.src+')';
ctx=canvas.getContext('2d');
ctx.fillStyle='transparent';
ctx.fillRect(0, 0, w, h);//绘制矩形
layer(ctx);
ctx.globalCompositeOperation = 'destination-out';
canvas.addEventListener('touchstart', eventDown);
canvas.addEventListener('touchend', eventUp);
canvas.addEventListener('touchmove', eventMove);
canvas.addEventListener('mousedown', eventDown);
canvas.addEventListener('mouseup', eventUp);
canvas.addEventListener('mousemove', eventMove);
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment