使用canvas制作刮刮卡效果(1)
来源:互联网 发布:淘宝智能版有间隙 编辑:程序博客网 时间:2024/04/28 13:05
本效果目前只有touch事件,还没有做pc端和手机端的区分和适应。
另外,只是单纯的刮的效果,兼容性目前还没有广泛测试,希望看到的不兼容性能够提出来哦,如果有解决办法那就更好啦~
下一步会加入多端适应。
html代码:
<canvas id="canvas"></canvas><div id="bgimg"></div>
css样式:
<style type="text/css">*{ margin: 0 auto; padding:0;}body{ width: 100%; height: 100%; overflow: hidden;}canvas,#bgimg{ width: 100%; height: 100%; position: absolute; left: 0; top: 0;}canvas{ z-index: 100;}#bgimg{ background: url(bg.jpg) no-repeat center; background-size: cover; z-index: 50; display: none;}</style>
js:
<script type="text/javascript">var ww = window.innerWidth;var wh = window.innerHeight;var body = document.getElementsByTagName('body').item(0),canvas = document.getElementById('canvas'),bgimg = document.getElementById('bgimg');body.style.width = ww;body.style.width = wh;canvas.width = ww;canvas.height = wh;var ctx = canvas.getContext('2d');var canimg = new Image();canimg.src = 'img.jpg';canimg.onload = function(){bgimg.style.display = 'block';var imgwidth = canimg.width;var imgheight = canimg.height;if(imgwidth/imgheight > ww/wh){var sh = imgwidth - (ww*imgheight)/wh;ctx.drawImage(canimg,sh/2,0,(ww*imgheight)/wh,imgheight,0,0,ww,wh);}else if(imgwidth/imgheight < ww/wh){var sw = imgheight - (wh*imgwidth)/ww;ctx.drawImage(canimg,0,sw/2,imgwidth,(wh*imgwidth)/ww,0,0,ww,wh);}else{ctx.drawImage(canimg,0,0);}ctx.lineCap = 'round';ctx.lineJoin = 'round';ctx.lineWidth = 40;ctx.strokeStype = "transprent";ctx.globalCompositeOperation = "destination-out";var x1,x2,y1,y2;canvas.addEventListener('touchstart',function(){event.preventDefault();var touch = event.targetTouches[0];x1 = touch.pageX;y1 = touch.pageY;//ctx.pointTo(x1,y1);},false);canvas.addEventListener('touchmove',function(){event.preventDefault();var touch = event.touches[0];ctx.save();ctx.translate(1,1);ctx.beginPath();x2 = touch.pageX;y2 = touch.pageY;ctx.moveTo(x1,y1);//ctx.arc(x,y,20,0,2*Math.PI);//ctx.fill();ctx.lineTo(x2,y2);x1 = x2;y1 = y2;ctx.stroke();ctx.translate(0,0);ctx.restore();ctx.closePath();},false);canvas.addEventListener('touchend',function(){},function(){event.preventDefault();});}</script>
底下的图片:
上一层的图片:
刮开的效果:
0 0
- 使用canvas制作刮刮卡效果(1)
- canvas 制作时钟效果
- 如何使用 HTML5 Canvas 制作水波纹效果
- canvas系类-非零坏绕原则(二)制作剪纸效果
- HTML5 Canvas 制作水波纹效果
- 离屏Canvas——制作放大镜效果
- Canvas制作圆形进度条Loading效果
- 用canvas 制作一个冒泡效果
- 【html5 canvas】使用Canvas做出橡皮擦效果
- 使用html5 canvas 制作时钟
- 使用Canvas,Path制作画板
- canvas之刮刮卡效果
- 使用HTML5画布(canvas)生成阴影效果
- HTML5 Canvas刮刮卡效果 实例
- html5 canvas实现刮刮卡效果
- HTML5 canvas绘图制作打击视频玻璃破碎动画效果
- canvas简单使用(1)
- 使用Canvas制作MIDlet的欢迎界面
- hdu 2544 (图论模板)
- cookie的使用
- Debian中完全卸载MySQL
- 隐马尔可夫模型 (Hidden Markov Model,HMM)
- setsebool命令
- 使用canvas制作刮刮卡效果(1)
- java.lang.IllegalArgumentException: column '_id' does not exist
- PHP工作原理
- C#中get post提交方式的使用与区别
- Android开发者如何日进斗金,手把手教你教你APP推广和盈利的方案
- POJ 1012 Joseph 变形约瑟夫环
- SDUT oj 3005 打怪升级(记忆化搜索)
- atomic与nonatomic
- MFC项目中加入DuiLib改造界面