色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用代碼來實現一下中彩票的快樂

OpenHarmony技術社區 ? 來源:鴻蒙技術社區 ? 作者:陳淇 ? 2022-04-21 08:25 ? 次閱讀

“我只是想中個彩票一輩子不用不上班而已,很過分嗎,又不是想要天上的星星”。

前段時間經常聽見這句話,但是對于我來說,中彩票的幾率還是太小了,還是老老實實擼代碼吧,用代碼來實現一下中彩票的快樂。

實現步驟

第一步:創建結構

首先根據實現效果創建相應的結構,給刮刮樂畫設置背景圖片,讓它看起來美觀。

實現效果:

hml 代碼:

xxx.hml

<divclass="container">
<divclass="card">
<divclass="prize-box">

<textclass="text">
{{prize}}
text>

<canvasref="canvas"style="width:202px;height:43px;"@touchstart="touchstart"
@touchmove="touchmove"@touchend="touchend"@touchcancel="touchcancel"class="canvas">canvas>
div>
div>
div>

css 代碼部分:

.container{
flex-direction:column;
justify-content:center;
align-items:center;
width:100%;
height:100%;
background-color:#284243;
font-family:sans-serif;
}

/*設置刮獎背景*/
.card{
width:300px;
height:300px;
background-image:url(/common/images/guaguale.png);
background-size:cover;
justify-content:space-around;
align-items:center;
flex-direction:column;
}


.prize-box{
margin-left:5%;
margin-top:33%;
width:202px;
}

/*開獎區域樣式*/
.text{
text-align:center;
position:absolute;
width:202px;
height:43px;
background-color:#fff;
z-index:1;
font-size:18px;
font-weight:600;
}

/*刮刮樂涂層*/
.canvas{
z-index:2;
}

完成后實現的效果。

第二步:寫 js 代碼實現上層刮刮樂涂層效果

通過 ctx.fillRect 方法實現矩形區域的涂層填充,將畫布變為灰色;通過 ctx.font 設置字體大小。

ctx.fillText 實現涂層上方文字效果,ctx.fillStyle 實現文字顏色設置。在 onShow 處進行調用就能實現基礎的涂層效果了。

效果圖如下:

注意:這里在 onInit 處調用函數不能成功展示出畫布,在 onShow 時調用才顯示成功。

xxx.js

onShow(){
this.draw();
},
draw(){
varel=this.$refs.canvas;
varctx=el.getContext('2d',{antialias:true});
this.el=el
this.ctx=ctx

//填充的顏色
ctx.fillStyle='gray';
//填充矩形fillRect(起始X,起始Y,終點X,終點Y)
ctx.fillRect(0,0,202,43);

this.ctx.fillStyle='#000';
//繪制填充文字
this.ctx.font="28px";
this.ctx.fillText('刮開有獎',50,30);
},

第三步:給 canvas 設置觸摸事件,實現效果

給 canvas 畫布上綁定觸摸事件,在觸摸時計算觸摸點的位置,以觸摸點的坐標為圓心,進行圓形區域的擦除。

觸摸點坐標計算:通過觸摸事件得到一個對象,將對象進行解析會得到對應的值,對數據進行處理,拿到觸摸點的 X,Y 坐標點。

調用 ctx.arc 方法進行畫圓,選中圓形區域進行消除。

xxx.hml

ref="canvas"style="width:202px;height:43px;"@touchstart="touchstart"
@touchmove="touchmove"@touchend="touchend"@touchcancel="touchcancel"class="canvas"></canvas>

xxx.js


touchstart(){
this.isDraw=true;
},

touchmove(e){
letx=JSON.stringify(e.touches)
//去掉中括號,將其變成對象
letx1=x.replace(/[|]/g,'')
letx2=JSON.parse(x1)
letx3=JSON.stringify(x2)

//計算觸摸點位置
letX1=parseInt(JSON.parse(x3).localX)
letY1=parseInt(JSON.parse(x3).localY)
this.ctx.globalCompositeOperation='destination-out';

//畫圓
this.ctx.arc(X1,Y1,10,0,2*Math.PI);
console.log('6666666')
//填充圓形
this.ctx.fill();
},

touchend(){
this.isDraw=false;
},

touchcancel(){
this.isDraw=false
},

第四步:設置超過一定百分比清除畫布

計算刮過區域的面積:使用 ctx.getImageData 方法得到整個區域的圖像信息。

getImageData() 方法返回 ImageData 對象,該對象拷貝了畫布指定矩形的像素數據。

對于 ImageData 對象中的每個像素,都存在著四方面的信息,即 RGBA 值:

  • R - 紅色(0-255)

  • G - 綠色(0-255)

  • B - 藍色(0-255)

  • A - alpha 通道(0-255;0 是透明的,255 是完全可見的)

color/alpha 以數組形式存在,并存儲于 ImageData 對象的data屬性中。

通過判斷像素點的 A 值是否為 0 來判斷已經刮過的區域進行計算,最終將計算出的區域面積與總面積進行對比來設置刮除區域超過多少百分比時進行清除整個區域。

通過調用 ctx.clearRect 方法來進行整個區域的清除。

//計算已經刮過的區域占整個區域的百分比
getFilledPercentage(){
letimgData=this.ctx.getImageData(0,0,this.mWidth,this.mHeight);
//imgData.data是個數組,存儲著指定區域每個像素點的信息,數組中4個元素表示一個像素點的rgba值
letpixels=imgData.data;
lettransPixels=[];
for(leti=0;i4){
//需要判斷像素點是否透明需要判斷該像素點的a值是否為0
if(pixels[i+3]==0){
transPixels.push(pixels[i+3])
}
}
return(transPixels.length/(pixels.length/4)*100).toFixed(2)+'%'
},

//設置閾值,去除灰色涂層
handleFilledPercentage(percentage){
percentage=percentage||0;
console.log('percentage='+percentage)
if(parseInt(percentage)>50){
//去除畫布方法一:直接將canvas涂層清除
this.ctx.clearRect(0,0,this.mWidth,this.mHeight)
console.log('清除畫布')

//方法2:將canvas涂層設置為透明
//this.ctx.fillStyle='rgba(255,255,255)';
//this.ctx.fillRect(0,0,this.mWidth,this.mHeight)
}
},

源碼地址:

https://gitee.com/chen-qi-7/demo-g

總結

以上就是制作一個刮刮樂的詳細過程了,最終效果與上面的效果一樣。其實是一個很簡單的功能,利用了 canvas 的一些特性來進行操作,后期還可以給其增加更多的功能,歡迎各位開發者一起討論與研究,希望本次分享對大家的學習有所幫助。

原文標題:HarmonyOS基于JSAPI實現刮刮樂效果

文章出處:【微信公眾號:HarmonyOS技術社區】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4786

    瀏覽量

    68556
  • HarmonyOS
    +關注

    關注

    79

    文章

    1974

    瀏覽量

    30165

原文標題:HarmonyOS基于JSAPI實現刮刮樂效果

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    求生日快樂的音樂代碼

    想用單片機控制蜂鳴器,使得蜂鳴器演奏生日快樂這首歌,希望能得到生日快樂這首歌的音樂代碼
    發表于 04-11 19:19

    大家討論一下蟻群算法實現路徑規劃的硬件實現問題

    本帖最后由 gk320830 于 2015-3-8 06:44 編輯 大家討論一下蟻群算法實現路徑規劃的硬件實現問題,不僅僅是
    發表于 04-26 17:19

    請教一下怎么AD5763實現雙極性電壓輸出數模轉換

    我知道款高性能數模轉換器AD5763 ; 想請教一下怎么AD5763實現雙極性電壓輸出數模轉換?
    發表于 04-07 07:04

    介紹一下波形占空比實現的方式

    先上圖如圖 是我生成的個波形 這個波形的占空比在連續的四個周期內分別是10%,20%,30%,40%, 并且按照這個順序循環這里大致介紹一下實現的方式。使用的軟件是Cubemx(庫函肯定也可以
    發表于 08-04 09:25

    如何將紅外通訊代碼轉化實現

    如何將紅外通訊代碼轉化實現
    發表于 10-20 07:26

    iOS中怎樣代碼實現mvvm的記錄

    真的,代碼這個東西光看看不出個花,還是要寫出來才能體會的更深,所以我不講這兩種模式的來龍去脈,我也講不清 ^_^, 要是看過比較多理論上的東西,再結合一下代碼理理思路還是極好滴。 目的介紹 上面已經說了,這是
    發表于 09-25 11:19 ?0次下載
    iOS中怎樣<b class='flag-5'>用</b><b class='flag-5'>代碼</b><b class='flag-5'>實現</b>mvvm的記錄

    基于區塊鏈構架研發的國家級底層彩票系統Winchain介紹

    ,用去中心化的思維革新彩票行業,將 Winchain 區塊鏈彩票發展成為世界彩票底層系統的標準。目前,非洲某國國家彩票系統已經決定采用 Winchain 底層
    發表于 03-13 10:59 ?6134次閱讀
    基于區塊鏈構架研發的國家級底層<b class='flag-5'>彩票</b>系統Winchain介紹

    怎樣成為快樂的ASP.NET程序員

    首先我想解釋一下標題中兩個關鍵字: “快樂”, “ASP.NET程序員”。
    的頭像 發表于 06-11 17:18 ?2443次閱讀

    電磁爐加熱一下就停一下什么原因及解決辦法

    電磁爐有時會出現加熱故障,現象是熱一下一下在熱一下又停一下,基本隔
    發表于 03-18 09:02 ?27.5w次閱讀

    電磁爐加熱一下就停一下什么原因

    電磁爐加熱一下就停一下什么原因。
    的頭像 發表于 06-04 10:01 ?3.8w次閱讀

    剖析一下CPU對代碼的識別和讀取

    先說一下半導體,啥叫半導體?就是介于導體和絕緣體中間的種東西,比如二極管。
    的頭像 發表于 02-13 16:32 ?1300次閱讀

    分享一下Cortex-M裸機環境臨界區保護的幾種實現方法

    RTOS有臨界區,裸機依然有臨界區。今天給大家分享一下Cortex-M裸機環境臨界區保護的幾種實現方法。
    發表于 06-13 09:08 ?768次閱讀
    分享<b class='flag-5'>一下</b>Cortex-M裸機環境<b class='flag-5'>下</b>臨界區保護的幾種<b class='flag-5'>實現</b>方法

    彩票機的組網方案介紹

    歡迎來到東知識小課堂彩票機最初的組網構思以及使用的設備在篇早期的文章中我發現了彩票機最初的組網構思——“
    的頭像 發表于 04-15 09:00 ?2141次閱讀
    <b class='flag-5'>彩票</b>機的組網方案介紹

    盤點一下CST電磁仿真軟件的求解器

    今天我們一起來盤點一下CST電磁仿真軟件那些牛叉的求解器。快來數一下,你用了里面的幾種吧!
    的頭像 發表于 11-20 10:18 ?6169次閱讀
    盤點<b class='flag-5'>一下</b>CST電磁仿真軟件的求解器

    浪涌抗擾度怎么測?我們這個A/D轉換器試了一下

    浪涌抗擾度怎么測?我們這個A/D轉換器試了一下
    的頭像 發表于 11-27 15:20 ?768次閱讀
    浪涌抗擾度怎么測?我們<b class='flag-5'>用</b>這個A/D轉換器試了<b class='flag-5'>一下</b>
    主站蜘蛛池模板: 东北成人社区| 在线va无卡无码高清| 日本一区二区三区在线观看网站 | 亚洲视频免费看| 小雪奶水涨翁工帮吸的推荐语录 | 精品免费在线视频| 国内精品七七久久影院| 国产精品一区二区欧美视频| 国产精品99久久久久久动态图| 国产成人永久免费视频| 国产超碰AV人人做人人爽| 国产电影无码午夜在线播放| 国产精品久久久久婷婷五月色婷婷 | 美艳人妻在厨房翘着屁股| 久久青草在线视频精品| 久久精品亚洲牛牛影视| 巨大乳hdbbw| 男人女人边摸边吃奶边做| 欧美丰满白嫩bbxx| 日韩中文无线码在线视频| 涩涩免费网站| 亚洲AV国产精品无码精| 亚洲视频在线免费观看| 中文字幕亚洲男人的天堂网络| 973午夜伦伦电影论片| 厕所RXXX| 国产精品一区二区免费| 精品一区二区三区高清免费观看| 久久青青草原精品国产软件| 男人插女人逼逼| 色拍拍噜噜噜啦啦新网站| 午夜亚洲国产理论片二级港台二级| 亚洲精品久久一区二区三区四区| 伊人久久综合| www.一级毛片| 国产毛片A级久久久不卡精品| 精品人妻无码一区二区三区蜜桃臀| 乱码午夜-极品国产内射| 欧美重口绿帽video| 无码AV动漫精品一区二区免费| 亚洲人成人77777在线播放|