canvas画布实现刮刮乐刮奖

- 日理万妓 2021-09-16 04:22 628阅读 0赞

70

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <style type="text/css">
  7. #cv{
  8. /*border:1px solid;*/
  9. position: absolute;
  10. left:35px;
  11. top:175px;
  12. }
  13. div{
  14. width: 200px;
  15. height: 100px;
  16. font-size:30px;
  17. line-height: 100px;
  18. text-align: center;
  19. position:absolute;
  20. left:50px;
  21. top:185px;
  22. }
  23. img{
  24. width: 300px;
  25. height: 500px;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <img src="./cark.png">
  31. <div id="text"></div>
  32. <canvas id="cv" width="247" height="120"></canvas>
  33. </body>
  34. <script type="text/javascript">
  35. //定义数组,在随机抽奖做准备
  36. var arr =["谢谢惠顾","特等奖","张国荣的吻","美女50","豪车100","优酷会员1个月","风油精一打"];
  37. var index = parseInt(Math.random()*arr.length);
  38. text.innerHTML=arr[index];
  39. console.log(index);
  40. var ctx = cv.getContext("2d");
  41. ctx.beginPath();
  42. //只有灰色区域是画布,红色的图片是添加到body中的
  43. ctx.fillStyle="gray";
  44. ctx.fillRect(0,0,250,120);
  45. //显示源图像之外的目标图像,此刻灰色区域就是目标图像,在mousemove中绘制的圆为源图像
  46. ctx.globalCompositeOperation="destination-out";
  47. ctx.beginPath();
  48. cv.onmousedown = function(e){
  49. document.onmousemove = function(e){
  50. console.log(222);
  51. var e = e || window.event;
  52. //e.clientX是获取的关于浏览器可视窗口的鼠标点坐标
  53. //求关于灰色区域的鼠标点位置,就需要减去灰色区域的offsetLeft以及offsetTop
  54. var x = e.clientX-cv.offsetLeft;
  55. var y = e.clientY-cv.offsetTop;
  56. ctx.moveTo(x,y);
  57. console.log(x,y);
  58. //绘制源图片,为圆形
  59. ctx.arc(x,y,10,0,Math.PI*2,false);
  60. ctx.fill();
  61. //getImageData运行在服务器环境下:能得到一个对象,对象中的data属性存储了关于参数中的四个值,
  62. //从哪里开始获取获取多大的图像的每个点的像素值,四个为一组,分别代表rgba
  63. //获取每次移动的时候画布上面的所有像素点,当每第四个值为0时,就表示该像素点为透明,当所有判断
  64. //透明度的值有百分之60之上,就清空画布,将刮奖区完全显示出来
  65. var mydata = ctx.getImageData(0,0,cv.width,cv.height);
  66. var data = mydata.data;
  67. var count = 0;
  68. for(var i=0;i<data.length;i+=4){
  69. console.log(111);
  70. var a = data[i+3];
  71. if(a==0){
  72. count++;
  73. console.log(count);
  74. }
  75. if(count>=data.length/4*0.6){
  76. ctx.clearRect(0,0,cv.width,cv.height);
  77. }
  78. }
  79. }
  80. }
  81. </script>
  82. </html>

发表评论

表情:
评论列表 (有 0 条评论,628人围观)

还没有评论,来说两句吧...

相关阅读

    相关 canvas应用----

    最近在学习html5,为了更好地学习和帮助其他人我决定把我写过的案例写下来~~ 先说一下刮刮乐这个程序实现的注意点 材料:一张图片和canvas画布 在html