欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

微信小程序canvas怎么實(shí)現(xiàn)刮刮樂(lè)效果-創(chuàng)新互聯(lián)

這篇文章主要介紹了微信小程序canvas怎么實(shí)現(xiàn)刮刮樂(lè)效果,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)習(xí)水免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

效果圖

微信小程序canvas怎么實(shí)現(xiàn)刮刮樂(lè)效果

設(shè)計(jì)流程

微信小程序canvas怎么實(shí)現(xiàn)刮刮樂(lè)效果

設(shè)計(jì)思路

  1. canvas設(shè)置背景圖,作為中獎(jiǎng)圖片;

  2. 在canvas上繪制刮的灰色涂層;

  3. 通過(guò)綁定的事件,清除對(duì)應(yīng)區(qū)域的涂層;

  4. 最后判斷涂層清除區(qū)域是否超過(guò)設(shè)置的可見(jiàn)百分比,如果超過(guò)則全部涂層清除,否則不清楚。

1、全局常量

獲取用戶傳入的canvas的ID,設(shè)置的canvas的寬高,canvas涂層的顏色,清除當(dāng)前坐標(biāo)的半徑和直徑,計(jì)算當(dāng)前清除的面積,全部清除百分比,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、變量:判斷清除全部涂層的布爾值,記錄清除坐標(biāo)的數(shù)組。
2、API:調(diào)用創(chuàng)建canvas繪圖上下文API。
3、方法:調(diào)用涂層繪制函數(shù),調(diào)用事件綁定函數(shù)。

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

3、涂層繪制函數(shù)的實(shí)現(xiàn)

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

4、事件綁定函數(shù)的實(shí)現(xiàn)

1 、touchstart事件只是清除當(dāng)前位置的坐標(biāo)點(diǎn)半徑的涂層。
2 、touchmove事件清除移動(dòng)過(guò)程個(gè)坐標(biāo)點(diǎn)半徑內(nèi)的涂層。
3 、touchend事件判斷當(dāng)前次清除是否超過(guò)總面積的75%,超過(guò)則全部清除,否則不做處理。

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橡皮擦函數(shù)的實(shí)現(xiàn)

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

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);
 }

提供的其他實(shí)現(xiàn)思路

方法一:本文提供的方法是將中獎(jiǎng)圖片作為背景設(shè)置給canvas,然后清除canvas涂層來(lái)實(shí)現(xiàn)刮刮樂(lè)效果。
方法二:canvas繪制涂層,然后取圖片在canvas相同坐標(biāo)的像素,最后將該處圖片像素繪制到canvas。
方法三:類似方法一,只是將背景直接用圖片img.定位在canvas的下邊。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“微信小程序canvas怎么實(shí)現(xiàn)刮刮樂(lè)效果”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章標(biāo)題:微信小程序canvas怎么實(shí)現(xiàn)刮刮樂(lè)效果-創(chuàng)新互聯(lián)
分享鏈接:http://aaarwkj.com/article4/dipooe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、定制網(wǎng)站網(wǎng)站改版、網(wǎng)站設(shè)計(jì)公司、做網(wǎng)站、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
亚洲综合国产一区二区| 国产男女猛烈无遮挡av| 亚洲国产精品欧美激情| 亚洲欧美日韩校园春色| 少妇一夜一次一区二区| 国产男女爱猛视频在线| 日本欧美精品一区二区三区| 欧美国产日韩一区二区三区视频| 国产在线精彩视频自拍| 国产91黑丝在线播放| 国产精品欧美日韩一区| av毛片在线播放免费| 岛国免费av在线观看| 欧美国产精品中文字幕| 久久久精品人妻免费网站| 五月天丁香婷婷狠狠狠| 国产一区二区爽爽爽视频| 久久国产国内精品国语对白| 亚洲综合一区国产精品| 亚洲黄色片在线播放| av网址不卡在线免费观看| 国产欧美日韩精品三级| 日本中文有码视频在线观看| 99精品人妻一区二区三区| 我想看亚洲一级黄色录像| 色呦呦视频在线免费看| 日本午夜在线观看视频| 日本特黄高清免费大片| 91欧美在线激情视频| 四虎免费在线高清观看| 韩国黄色三级一区二区| 少妇内射呻吟中文字幕视频| 国产精品一区二区国产激情久久| 夫妻性生活在线视频一级片| 中文字幕韩国三级电影| 国产精品一区二在线观看| 尤物视频最新在线观看| 999热这里只有精品视频| 五月色婷婷六月色丁香| 激情毛片av在线免费看| 熟女人妻一区二区三区免费看|