亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信小程序canvas實現刮刮樂效果

2020-03-21 16:14:59
字體:
來源:轉載
供稿:網友

本文實例為大家分享了微信小程序實現刮刮樂效果的具體代碼,供大家參考,具體內容如下

效果圖

微信小程序,canvas,刮刮樂

設計流程

微信小程序,canvas,刮刮樂

設計思路

  1. canvas設置背景圖,作為中獎圖片;
  2. 在canvas上繪制刮的灰色涂層;
  3. 通過綁定的事件,清除對應區域的涂層;
  4. 最后判斷涂層清除區域是否超過設置的可見百分比,如果超過則全部涂層清除,否則不清楚。

1、全局常量

獲取用戶傳入的canvas的ID,設置的canvas的寬高,canvas涂層的顏色,清除當前坐標的半徑和直徑,計算當前清除的面積,全部清除百分比,canvas的面積。

constructor(page,opts){ opts = opts || {}; this.page = page; this.canvasId = opts.canvasId || 'luck'; this.width = opts.width || 300; this.height = opts.height || 150; this.maskColor = opts.maskColor || '#dddddd'; this.size = opts.size || 8; this.r = this.size * 2; this.area = this.r * this.r;  this.scale = opts.scale || 0.75; this.totalArea = this.width * this.height; this.init();}

2、初始化全局變量

1、變量:判斷清除全部涂層的布爾值,記錄清除坐標的數組。 
2、API:調用創建canvas繪圖上下文API。 
3、方法:調用涂層繪制函數,調用事件綁定函數。

init(){ this.show = false; this.clearPoints = []; this.ctx = wx.createCanvasContext(this.canvasId, this); this.drawMask(); this.bindTouch();}

3、涂層繪制函數的實現

drawMask(){ this.ctx.setFillStyle(this.maskColor); this.ctx.fillRect(0, 0, this.width, this.height); this.ctx.draw();}

4、事件綁定函數的實現

1 、touchstart事件只是清除當前位置的坐標點半徑的涂層。 
2 、touchmove事件清除移動過程個坐標點半徑內的涂層。 
3 、touchend事件判斷當前次清除是否超過總面積的75%,超過則全部清除,否則不做處理。

bindTouch(){ const _this = this; _this.page.onTouchStart = function(e){  _this.eraser(e,true); } _this.page.onTouchMove = function (e) {  _this.eraser(e); } _this.page.onTouchEnd = function (e) {  if(_this.show){   _this.ctx.clearRect(0, 0, _this.width, _this.height);   _this.ctx.draw();  } }}

5、eraser橡皮擦函數的實現

1、獲取記錄清除坐標點數組的長度,當前位置的x,y坐標,計算清除塊的起點,聲明計數變量。 
2、判斷是否是第一次進入,是則直接記錄該坐標。 
3、判斷當前點在記錄數組中是否存在,如果存在,直接返回,如果不存在,在記錄入數組。 
4、是否滿足清除全部涂層,滿足show賦值為true,不滿足,直接清除當前坐標涂層。

eraser(e,bool){  let len = this.clearPoints.length;  let count = 0  let x = e.touches[0].x, y = e.touches[0].y;  let x1 = x - this.size;  let y1 = y - this.size;  if(bool){   this.clearPoints.push({    x1: x1,    y1: y1,    x2: x1 + this.r,    y2: y1 + this.r   })  }  for (let val of this.clearPoints){   if(val.x1 > x || val.y1 > y || val.x2 < x || val.y2 < y){    count++;   }else{    break;   }  }  if(len === count){   this.clearPoints.push({    x1: x1,    y1: y1,    x2: x1 + this.r,    y2: y1 + this.r   })  }  if (this.clearPoints.length && this.r * this.r * this.clearPoints.length > this.scale * this.totalArea){   this.show = true;  }  this.ctx.clearRect(x1, y1, this.r, this.r);  this.ctx.draw(true); }

提供的其他實現思路

方法一:本文提供的方法是將中獎圖片作為背景設置給canvas,然后清除canvas涂層來實現刮刮樂效果。
方法二:canvas繪制涂層,然后取圖片在canvas相同坐標的像素,最后將該處圖片像素繪制到canvas。
方法三:類似方法一,只是將背景直接用圖片img.定位在canvas的下邊。

總結

最重要的是判斷清除涂層在總canvas面積的占有率記錄,只要判斷該坐標不在清除的范圍,就可以記錄該坐標。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美壮男野外gaytube| 亚洲深夜福利在线| 国产偷国产偷亚洲清高网站| 91av网站在线播放| 欧美成人性色生活仑片| 亚洲第一页中文字幕| 欧美日本高清视频| 蜜月aⅴ免费一区二区三区| 国产精品视频自拍| 亚洲美女黄色片| 国产精品678| 欧美视频在线免费看| 91理论片午午论夜理片久久| 午夜精品国产精品大乳美女| 亚洲国产精品小视频| 久久在线免费观看视频| 亚洲精品www久久久| 97视频免费在线观看| 高清一区二区三区日本久| 国产视频精品xxxx| 欧美在线视频观看免费网站| 68精品国产免费久久久久久婷婷| 欧美在线一区二区视频| 午夜精品视频在线| 久久激情视频久久| 日韩在线播放视频| 国产不卡av在线免费观看| 欧美激情亚洲国产| 日韩视频精品在线| 日本道色综合久久影院| 亚洲日韩中文字幕| 国产伦精品一区二区三区精品视频| 日韩精品极品视频免费观看| 国产视频精品自拍| 亚洲专区在线视频| 亚洲有声小说3d| 精品自在线视频| 国产精品久久久久久久久| 欧美性猛交丰臀xxxxx网站| 亚洲美女动态图120秒| 欧美精品久久久久a| 日韩在线欧美在线| 亚洲亚裔videos黑人hd| 亚洲美女在线视频| 欧美中文在线观看| 亚洲a成v人在线观看| 国产精品久久在线观看| 日韩欧美一区视频| 欧美福利视频网站| 久久韩剧网电视剧| 亚洲精品动漫100p| 亚洲性视频网站| 日韩最新av在线| 精品夜色国产国偷在线| 中文字幕v亚洲ⅴv天堂| 久久亚洲综合国产精品99麻豆精品福利| 欧美日韩一区二区在线| 日韩在线观看精品| 欧美激情亚洲国产| 伊人伊成久久人综合网小说| 欧美高清电影在线看| 国产www精品| 亚洲国产精品va在线看黑人动漫| 欧美交受高潮1| 色综合影院在线| 亚洲国产成人精品一区二区| 另类天堂视频在线观看| 亚州av一区二区| 欧美激情在线狂野欧美精品| 欧美极品美女视频网站在线观看免费| 亚洲最大中文字幕| 色婷婷综合久久久久中文字幕1| 国产精品在线看| 久久精品视频亚洲| 欧美成人亚洲成人| 亚洲第一页在线| 亚洲黄色免费三级| 久久久亚洲精品视频| 国产精品爽爽ⅴa在线观看| 久久久精品欧美| 亚洲国产成人在线视频| 日韩女在线观看| 日韩av在线一区二区| 亚洲精品视频免费在线观看| 欧美一区第一页| 一区国产精品视频| 国产成人综合av| 欧美一区深夜视频| 久久97久久97精品免视看| 亚洲欧美成人精品| 欧美在线视频免费播放| 日本高清不卡在线| 亚洲成人在线网| 国内精品久久久久久久| 国产精品免费久久久| 日本久久精品视频| 欧美丰满片xxx777| 91av在线视频观看| 国产成人精品视频| 欧美成人久久久| 成人欧美在线视频| 北条麻妃99精品青青久久| 欧美夫妻性视频| 精品久久久久久亚洲精品| 国产精品福利网站| 51精品国产黑色丝袜高跟鞋| 精品久久久久久| 久久理论片午夜琪琪电影网| 亚洲专区在线视频| 国产精品一区二区久久| 国产精品免费视频久久久| 欧美成人黑人xx视频免费观看| 久久综合88中文色鬼| www.日韩.com| 国产精品视频yy9099| 久久精品91久久香蕉加勒比| 国产在线视频2019最新视频| 九九热这里只有精品6| 欧美在线亚洲一区| 在线观看国产精品日韩av| 成人久久精品视频| 日韩一区二区三区在线播放| 久久天天躁夜夜躁狠狠躁2022| 亚洲美女激情视频| 久久国产精品影片| 亚洲欧美国产日韩中文字幕| 亚洲一级免费视频| 久久久久久久久久久成人| 97视频色精品| 欧美国产日韩在线| 日韩av在线网址| 一区二区中文字幕| 亚洲精品久久久久久久久久久久久| 自拍偷拍亚洲精品| 国产在线精品自拍| 欧美一级高清免费播放| 国产精品啪视频| 伊人久久大香线蕉av一区二区| 国产精品va在线播放我和闺蜜| 亚洲白虎美女被爆操| 成人免费看黄网站| 秋霞午夜一区二区| 亚洲日本欧美日韩高观看| 国产精品三级美女白浆呻吟| 国产精品成人观看视频国产奇米| 欧美日韩国产一区二区| 亚洲国产欧美一区二区丝袜黑人| 亚洲天堂久久av| 中文字幕一区二区精品| 国产精品午夜国产小视频| 久久99亚洲热视| 国产欧美日韩高清| 亚洲欧美综合精品久久成人| 亚洲va久久久噜噜噜久久天堂| 国产主播喷水一区二区| 亚洲美女av在线播放| 精品久久久久久中文字幕大豆网| 日韩精品免费一线在线观看| 国产精品wwwwww| 成人妇女淫片aaaa视频| 久久精品成人欧美大片古装| 欧美成人一区二区三区电影| 日韩精品在线观看一区二区| 国模私拍视频一区|