首页 > 其他 > 详细

Canvas 刮刮卡

时间:2014-03-08 01:42:45      阅读:569      评论:0      收藏:0      [点我收藏+]

http://jsfiddle.net/299X4/


闲来无事,做了个小demo,顺便练习一下用原生s实现拖动效果。


document.getElementById("can3").addEventListener("mousedown",function(e){
    var rect = e.currentTarget.getBoundingClientRect();
    var gravityPoint = {
            x: e.clientX - rect.left,
            y: e.clientY - rect.top
          };
    
    if (gravityPoint.x >= ctx3_x && gravityPoint.x <= ctx3_x + 10 && gravityPoint.y >= ctx3_y && gravityPoint.y <= ctx3_y + 50) {
    	dragFlag = true;
    	pre_x = gravityPoint.x - ctx3_x;
    	pre_y = gravityPoint.y - ctx3_y;
    }
    
});
document.getElementById("can3").addEventListener("mouseup",function(e){
    var rect = e.currentTarget.getBoundingClientRect();
    var gravityPoint = {
            x: e.clientX - rect.left,
            y: e.clientY - rect.top
          };
    
    if (gravityPoint.x >= ctx3_x && gravityPoint.x <= ctx3_x + 10 && gravityPoint.y >= ctx3_y && gravityPoint.y <= ctx3_y + 50) {
        dragFlag = false;
        
    }
});
document.getElementById("can3").addEventListener("mousemove",function(e){
	var rect = e.currentTarget.getBoundingClientRect();
    var gravityPoint = {
            x: e.clientX - rect.left,
            y: e.clientY - rect.top
          };
	
	if (dragFlag) {
		ctx3_x = gravityPoint.x - pre_x;
	    ctx3_y = gravityPoint.y - pre_y;
	    ctx2.clearRect(ctx3_x, ctx3_y, 10, 50);
	}
	
});

我给ctx3绑定了3个事件,可以看到,mousedown鼠标按下,mousemove鼠标移到,mouseup鼠标松开


分情况判断,当鼠标按下,且此时鼠标坐标在橡皮的方块内时,dragflag为true,松开时为false,此时在mousemove方法里让橡皮移动。


然后来3个canvas,依次覆盖前一个,由于clearrect方法可以把canvas变透明,



所以鼠标在canvas3上移动,canvas2的内容被擦除,canvas1的文字显示出来,就是这个思路!


ok!


完!

Canvas 刮刮卡,布布扣,bubuko.com

Canvas 刮刮卡

原文:http://blog.csdn.net/u012844719/article/details/20717617

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!