麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

javascript+canvas實現刮刮卡抽獎效果

2024-05-06 16:23:57
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了javascript+canvas實現刮刮卡抽獎效果的相關資料,需要的朋友可以參考下

運用canvas做的簡單刮刮卡效果,每次刷新可重新測試

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
  5. <style type="text/css"
  6. *{ margin:0; padding:0;}  
  7.  
  8. .cjbox{ margin:100px; height:80px; width:200px; background:#FFF; position:relative;} 
  9. #canvas{position:absolute; left:0px; top:0px;z-index:99;} 
  10. .sjmes{ position:absolute; left:0px; top:0px; height:80px; width:200px; text-align:center; font-size:40px; line-height:80px; z-index:9;} 
  11. </style> 
  12. <title>demo1</title> 
  13. </head> 
  14. <body>  
  15.  
  16. <div style="position:relative; margin:20px 100px; background:#0CF; height:400px; width:500px; margin:0 auto;"
  17. <div>刮刮卡簡單抽獎</div> 
  18. <div class="cjbox"
  19. <div class="sjmes" id="sjmes"></div> 
  20. <canvas width=200 height=80 id="canvas"></canvas>  
  21. </div> 
  22. </div>  
  23.  
  24. </body> 
  25. <script type="text/javascript"
  26. //init  
  27. var cjcon=["一等獎","二等獎","三等獎","謝謝參與"];//獎項設置 
  28. var cjper=[3,10,20,100];//獎項率,次數 
  29. /* 
  30. * sjmes 
  31. * @Author 透筆度([email protected])  
  32. * @param {cjcon} 所有獎項  
  33. */ 
  34. var percjcon=[]; 
  35. for(var i=0;i<cjper.length;i++){ 
  36. peic(cjper[i],i); 
  37. }; 
  38. function peic(len,ind){ 
  39. for(var i=0;i<len;i++){ 
  40. percjcon.push(cjcon[ind]); 
  41. };  
  42. }; 
  43. var sjmes = document.getElementById("sjmes"); 
  44. var numrandom=Math.floor(Math.random()*percjcon.length); 
  45. sjmes.innerHTML=percjcon[numrandom]; 
  46.  
  47. var opacityb=0.5;//透明百分比,參考值,什么程度出現提示 
  48. var backcolorb="#ffaaaa"
  49. var numl=200*80;//總像素個數 
  50. var nump;//出現backcolorb的個數 
  51. var opacitya;//透明百分比實際值 
  52.  
  53. var canvas = document.getElementById("canvas"); //獲取canvas  
  54. var context = canvas.getContext('2d'); //canvas追加2d畫圖 
  55. var flag = 0; //標志,判斷是按下后移動還是未按下移動 重要 
  56. var penwidth=20; //畫筆寬度 
  57. context.fillStyle="#faa"//填充的顏色 
  58. context.fillRect(0,0,200,80); //填充顏色 x y坐標 寬 高 
  59.  
  60. canvas.addEventListener('mousemove', onMouseMove, false); //鼠標移動事件  
  61. canvas.addEventListener('mousedown', onMouseDown, false); //鼠標按下事件  
  62. canvas.addEventListener('mouseup', onMouseUp, false); //鼠標抬起事件  
  63. var movex=-1; 
  64. var movey=-1; 
  65. var imgData;//imagedada容器 
  66. var rgbabox=[];//存放讀取后的rgba數據; 
  67. function onMouseMove(evt) { 
  68. if (flag == 1) {  
  69. movex=evt.layerX; 
  70. movey=evt.layerY;  
  71. context.fillStyle="#FF0000"
  72. context.beginPath(); 
  73. context.globalCompositeOperation="destination-out"
  74. context.arc(movex,movey,penwidth,0,Math.PI*2,true); //Math.PI*2是JS計算方法,是圓  
  75. context.closePath(); 
  76. context.fill(); 
  77. }  
  78. }  
  79. function onMouseDown(evt) {  
  80. flag = 1; //標志按下 
  81. }  
  82. function onMouseUp(evt) {  
  83. flag = 0; 
  84. //讀取像素數據 
  85. imgData=context.getImageData(0,0,200,80);//獲取當前畫布數據 
  86. //imgData.data.length 獲取圖片數據總長度,沒4個為一組存放rgba 
  87. for(var i=0; i<imgData.data.length;i+=4){ 
  88. var rval=imgData.data[i]; 
  89. var gval=imgData.data[i+1]; 
  90. var bval=imgData.data[i+2]; 
  91. var aval=imgData.data[i+3]; 
  92. var rgbaval=rval+"-"+gval+"-"+bval+"-"+aval; 
  93. rgbabox.push(rgbaval); 
  94. //end 
  95. for(var j=0;j<rgbabox.length;j++){ 
  96. //alert(rgbabox[j].split("-")[0]) 
  97. rgbabox[j]='#'+rgbToHex(rgbabox[j].split("-")[0],rgbabox[j].split("-")[1],rgbabox[j].split("-")[2]);  
  98. nump=countSubstr(rgbabox.join(","),backcolorb,true); 
  99. opacitya=(numl-nump)/numl; 
  100. if(opacitya>opacityb){ 
  101. alert("恭喜你獲得"+percjcon[numrandom]) 
  102. }else{} 
  103.  
  104. }  
  105. function rgbToHex(r, g, b) { return ((r << 16) | (g << 8) | b).toString(16); }//rgb轉為16進制 #xxx形式 
  106. function countSubstr(str,substr,isIgnore){//計算字符串出現子字符串的個數 
  107. var count; 
  108. var reg=""
  109. if(isIgnore==true){ 
  110. reg="/"+substr+"/gi";  
  111. }else
  112. reg="/"+substr+"/g"
  113. reg=eval(reg); 
  114. if(str.match(reg)==null){ 
  115. count=0; 
  116. }else
  117. count=str.match(reg).length; 
  118. return count; 
  119. //end 
  120. </script> 
  121. </html> 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 欧美爱爱视频免费看 | 日韩视频不卡 | 久久久久久久久久综合 | 国产一区二区影视 | 欧美一级特级 | 高清在线观看av | 巨乳激情| 精品一区久久久 | 国产精品久久久久久久久久电影 | 国产日产精品一区二区三区四区 | 亚洲综合视频网 | 国产一有一级毛片视频 | 涩涩伊人 | 久久人| 黄色视频一级毛片 | 久久亚洲春色中文字幕久久 | 爱福利视频网 | 国产精品久久久久国产精品三级 | 91国在线高清视频 | 日韩一级片黄色 | 久久情爱网 | 久久国语对白 | 斗罗破苍穹在线观看免费完整观看 | 狠狠干夜夜操 | 在线成人一区二区 | 竹内纱里奈和大战黑人 | 黄色av网站免费看 | 美国黄色毛片女人性生活片 | 91看片淫黄大片欧美看国产片 | 国产一级一片免费播放 | 一区二区久久久久草草 | 久久国产精品久久久久久 | 欧美精品1区| 亚洲成人午夜精品 | 久久亚洲精品久久国产一区二区 | 红桃一区| 最新中文字幕第一页视频 | 国产精品a一 | 久久亚洲国产精品 | 久久久一区二区三区精品 | 久久久久国产成人免费精品免费 |