canvas-刮刮乐
来源:互联网 发布:网络技术员需要会什么 编辑:程序博客网 时间:2024/05/16 06:31
1.将刮刮乐的奖品设置为canvas的背景图
canvas.style.background='url()'
2.绘制遮盖层
ctx.fillStyle='rgb(211,211,211)'
ctx.fillRect(0,0,canvas.width,canvas.height)
3.绘制涂抹的小圆
ctx.globalCOmpostieOperation='destination-out';//需要在绘制新图形的时候让原图形与新图形重合部分消息,消失的部分变成透明,就能看见奖品的部分内容
ctx.arc(50,50,0,2*Math.PI);
ctx.fill();
4.实现刮的效果:按下鼠标不放,同时移动鼠标
$('canvas).on('mousedown',function(){
//鼠标还是按着的状态,同时移动鼠标
$('canvas').on('mousemove',function(e){
//根据鼠标位于canvas中的坐标绘制指定的圆
var circleX=e.pageX-canvas.offsetLeft;
var circleY=e.pageY-canvas.offsetTop;
ctx.beginPath();
ctx.arc(circleX,circleY,50,0,2*Math.PI);
ctx.fill();
//判断涂抹的区域是否大于画布的一半
//1.获取canvas标签中每一个像素点的信息(rgba的值)
var datas=ctx.getImageData(0,0,canvas.width,canvas.height).data;
//2.判断每一个像素点是否已经被刮掉了
var pionts=0;//保存了所有没有被刮掉的像素点
for(var i=0;i<datas.length;i+=4){
//3.判断如果该像素点的rgba的值还等于原来的值,说明该点没有被刮掉
if(datas[i]==211&&datas[i+1]==211&&datas[i+2]==211&&datas[i+3]==255){
pionts++;
}
}
if(pionts<canvas.width*canvas*height/2){
ctx.clearRect(0,0,canvas.width,canvas.height);
//解除所有的事件绑定
$('canvas').off('mousedown mousemove');
}
})
})
$('canvas').on('mouseup mouseleave',function(){
//鼠标离开画布让刮的
$('canvas').off('mousemove')
})
- Canvas 刮刮乐
- canvas 刮刮乐
- canvas--刮刮乐
- canvas-刮刮乐
- Html5 Canvas 刮刮乐
- canvas小例子-刮刮乐
- canvas 实现刮刮乐
- Canvas
- Canvas
- canvas
- Canvas
- Canvas
- canvas
- Canvas
- canvas
- Canvas
- Canvas
- canvas
- -webkit-margin-before:1em;-webkit-margin-after:1em;-webkit-margin-start:0px;-webkit-margin-end:0px;
- Java内存模型(四)-锁
- 为什么IT行业工作那么火爆,仍然人才短缺
- Visual Studio代码前出现虚线的问题
- HDU 2677 Dota all stars 【dfs练习】
- canvas-刮刮乐
- spark性能调优之广播大变量
- 微信开发常用技巧(1)-微信分享页用户名称带输入法头像解决方案
- ES2015(ES6)(上)
- 补零与频谱泄露
- leetcode 524. Longest Word in Dictionary through Deleting
- MySQL查询优化方法
- caffe 生成train.txt和val.txt文件 shell语句
- 排序算法