效果图
canvas上下文对象的globalCompositeOperation属性:
刮刮卡功能主要是使用这个值的设置来实现的,之前介绍过globalCompositeOperation属性共有11种值,详细介绍可以访问HTML 5 Canvas 参考手册
这里简单的对11种值做一下截图:
他这里写的源对象可以理解为后加上去的图形,就是在原有图形上后添加的图形。
刮刮卡功能的实现就是使用ctx.globalCompositeOperation = ‘destination-out’;来实现的。
下面附上实现代码:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
canvas {
background-image: url('guaguale.jpg');
background-size : 100% 100%;
width: 300px;
height: 150px;
border: 1px solid #000;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.fillStyle = "#999";
ctx.fillRect(0,0,500,500);
ctx.fill();
canvas.onmousedown = function () {
canvas.onmousemove = function (e) {
var event = e || window.event;
ctx.globalCompositeOperation = 'destination-out';
ctx.beginPath();
ctx.arc(e.clientX, e.clientY, 30, 0, Math.PI*2, false);
ctx.fillStyle = "rgba(0,0,0,1)";
ctx.fill();
}
canvas.onmouseup = function () {
canvas.onmousemove = function () {
return false;
}
}
}
</script>
</body>
</html>