精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從微信小程序到鴻蒙JS開發-canvas&stack&2048

開發
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com

[[383190]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

春節在家回看了張榮超老師的“從零開發鴻蒙小游戲APP“直播課(https://harmonyos.51cto.com/activity/17),聽完后在手機設備上完善了功能并實現了一個簡單的2048小游戲。這其中涉及到canvas和stack組件,在此做一些筆記。效果圖:

1、canvas組件

畫布組件,微信小程序也有,可以在其中動態繪制圖形和文字等。在2048游戲中,不同的數字對應的背景顏色都不同,如果使用動態樣式,判斷和渲染對性能的要求會很高。

  1. <canvas class="content" id="canvas" onswipe="swipeGrids"></canvas> 

1.1 獲取繪圖上下文

組件給定id或者ref,即可在js中獲取組件繪圖上下文,通過獲取的CanvasRenderingContext2D對象進行繪圖。官方文檔提及獲取繪圖上下文的操作不支持在onInit和onReady中進行調用,經實驗如在onInit()中執行應用將白屏,在onReady()中執行畫布中的內容將無法被繪制,故需寫在onShow()中。

  1. // 繪圖對象 
  2. var canvas; 
  3.  
  4. export default { 
  5.     data: { 
  6.     ... 
  7.     }, 
  8.     onShow() { 
  9.         canvas = this.$element("canvas").getContext("2d"); 
  10.         // 繪圖 
  11.         this.drawGrids(); 
  12.     }, 
  13. ... 

對于會在多個方法之內使用的全局變量,可以寫在data中,也可以寫在export之外。對于無需在頁面中綁定的數據,寫在export外或許可以提高一點性能。

1.2 監聽滑動事件

在畫布中滑動的事件綁定是通過onswipe屬性,這個在官方文檔中沒有說明,但是IDE是有提示的。對于方法的入參,打日志后看出結構如下:

event.direction有四種取值:up/down/left/right,可用于判斷滑動方向。

1.3 繪制矩形

  1. canvas.fillStyle = "#ffffff"

獲取繪圖上下文對象后,將其fillStyle屬性設置為十六進制顏色即可設置本次繪圖的顏色。也可使用createLinearGradient()給定漸變色,createPattern()創建填充模版。

  1. canvas.fillRect(leftTopX, leftTopY, gridWidth, gridWidth); 

fillRect()方法用于繪制矩形,四個參數分別為左上角X坐標,左上角Y坐標,寬度,高度。

1.4 繪制文字

  1. canvas.font = "70px HYQiHei-65S"
  2. canvas.fillStyle = gridTxColors[gridVal]; 

font屬性指定文字的大小和字體,fillStyle指定文字的顏色。

  1. canvas.fillText(text, leftBottomX, leftBottomY); 

fillText()方法用于繪制文字,三個參數分別為文字內容,左下角X坐標,左下角Y坐標。這里后兩個參數是左下角,和微信小程序以及剛才提到的fillRect()不同。

繪制2048格子及文字的方法:

  1. // 繪制格子 grids:存儲數字的二維數組; gridBgColors:存儲格子背景色的對象; gridTxColors:存儲文字顏色的對象 
  2.     drawGrids() { 
  3.         for (let r = 0; r < 4; r++) { 
  4.             for (let c = 0; c < 4; c++) { 
  5.                 let gridVal = grids[r][c].toString(); 
  6.                 // 繪制背景 
  7.                 canvas.fillStyle = gridBgColors[gridVal]; 
  8.                 let leftTopX = c * (gridWidth + gridMargin) + gridMargin; 
  9.                 let leftTopY = r * (gridWidth + gridMargin) + gridMargin; 
  10.                 // 左上角x 左上角y 寬度 高度 
  11.                 canvas.fillRect(leftTopX, leftTopY, gridWidth, gridWidth); 
  12.                 // 繪制文字 
  13.                 canvas.font = "70px HYQiHei-65S"
  14.                 if (gridVal != "0") { 
  15.                     if (gridVal == "2" || gridVal == "4") { 
  16.                         canvas.fillStyle = gridTxColors[gridVal]; 
  17.                     } else { 
  18.                         canvas.fillStyle = gridTxColors["others"]; 
  19.                     } 
  20.                     let offsetX = (4 - gridVal.length) * (gridWidth / 8); 
  21.                     let offsetY = (gridWidth - fontSize) / 2; 
  22.                     // 文字 左下角x 左下角y 
  23.                     canvas.fillText(gridVal, leftTopX + offsetX, leftTopY + offsetY + fontSize - 5); 
  24.                 } 
  25.             } 
  26.         } 
  27.     }, 

每次數字改變后,調用以上方法即可將2048的效果繪制出。

2、stack組件

這個組件很有意思,在stack中的子元素會順序入棧,實現堆疊效果。一般都是通過z-index的樣式實現,而鴻蒙這里的實現將數據結構的棧與頁面層級相結合,非常巧妙。

在游戲結束時,提示文字將覆蓋格子區域:

  1. <stack class="content"
  2.       <canvas class="content" id="canvas" onswipe="swipeGrids"></canvas> 
  3.       <div show="{{ isEnd }}"
  4.           <text> 
  5.               游戲結束 
  6.           </text> 
  7.       </div> 
  8.   </stack> 

事實上,鴻蒙js組件是不支持z-index樣式的。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-02-23 12:25:26

鴻蒙HarmonyOS應用開發

2021-03-02 09:29:29

鴻蒙HarmonyOS應用開發

2021-02-20 09:52:02

鴻蒙HarmonyOS應用開發

2021-02-21 11:09:18

鴻蒙HarmonyOS應用開發

2021-02-22 14:56:55

鴻蒙HarmonyOS應用開發

2021-02-25 10:01:19

鴻蒙HarmonyOS應用開發

2021-02-04 13:49:41

鴻蒙HarmonyOS應用開發

2021-02-23 09:52:42

鴻蒙HarmonyOS應用開發

2021-02-05 09:46:16

鴻蒙HarmonyOSjs開發

2021-02-25 15:13:08

鴻蒙HarmonyOS應用開發

2021-02-07 09:17:24

鴻蒙HarmonyOS應用開發

2021-02-24 09:36:03

鴻蒙CSS應用開發

2017-05-08 15:03:07

微信小程序開發實戰

2016-09-28 18:10:59

微信程序MINA

2016-11-04 10:49:48

微信小程序

2016-09-27 16:38:24

JavaScript微信Web

2016-09-27 20:36:23

微信HttpWeb

2016-11-04 10:30:17

微信小程序

2018-09-11 10:32:07

云開發小程序開發者

2016-11-07 10:30:07

微信小程序安裝配置
點贊
收藏

51CTO技術棧公眾號

中文字幕免费高清在线观看| 激情一区二区三区| 亚洲а∨天堂久久精品2021| 国产精品第一国产精品| 国产精品妹子av| 高清视频在线观看一区| 久久精品国产成人av| 成人网18免费网站| 精品黑人一区二区三区久久| 一本大道熟女人妻中文字幕在线| 9色在线视频网站| 国产一区二区91| 欧美一级高清免费| 色婷婷在线视频观看| 色先锋久久影院av| 91精品国产丝袜白色高跟鞋| 欧美日韩精品在线一区二区| 日本视频在线免费观看| 91麻豆6部合集magnet| 91网站免费观看| 国产成人无码专区| 好看的亚洲午夜视频在线| 亚洲天堂视频在线观看| 国内自拍偷拍视频| 欧美成人三级| 在线免费视频一区二区| 国产婷婷一区二区三区| av毛片在线免费看| 国产精品二区一区二区aⅴ污介绍| 黑人另类av| 国内精品偷拍视频| 久久99精品久久久久久国产越南 | 欧美性生交大片| 免费一区二区三区视频导航| 亚洲成av人影院在线观看| 亚洲第一天堂久久| 99只有精品| 欧美在线小视频| 久久久精品在线视频| 国产va在线视频| 亚洲一二三级电影| 国产欧美123| 在线视频国产区| 亚洲视频资源在线| 欧美精品一区二区性色a+v| av电影在线观看网址| 国产日韩欧美激情| 日本三级中国三级99人妇网站| 黄色av小说在线观看| 国产成人aaa| 99在线看视频| 二区三区在线视频| 大桥未久av一区二区三区中文| 91情侣偷在线精品国产| 爱爱爱爱免费视频| 国产三级精品三级观看| 香蕉视频一区二区三区| 亚洲国产精品久久久久秋霞蜜臀 | 国产精品麻豆| 日韩亚洲欧美在线| 欧美色图校园春色| 欧美一区一区| 亚洲国产精品资源| av在线网站观看| 精品黄色一级片| 在线视频精品一| 国产亚洲精品久久久久久豆腐| 日韩欧美网站| 欧美成人性色生活仑片| 免费观看a级片| 成人黄色免费短视频| 亚洲一区在线观看免费观看电影高清 | 亚洲欧美制服第一页| 精品国产av无码| 精品国产一区二区三区四区| 爱福利视频一区| 欧美日韩精品亚洲精品| 亚洲第一黄色| 国产成人av在线播放| 五月婷婷丁香在线| 国产一区欧美二区| 国产在线欧美日韩| 久青青在线观看视频国产| 国产精品天干天干在线综合| 伊人狠狠色丁香综合尤物| 9191在线播放| 欧美性猛交xxxx乱大交| 婷婷免费在线观看| 91成人午夜| 亚洲欧洲国产一区| 色欲一区二区三区精品a片| 精品成人在线| 国产精品久久久久久婷婷天堂| 国产一区二区在线不卡| av在线不卡观看免费观看| 色999五月色| 免费不卡视频| 欧美日韩国产中文字幕| 爱爱爱爱免费视频| 精品在线播放| 欧美高跟鞋交xxxxhd| 国产91精品看黄网站在线观看| 精品午夜久久福利影院| 国产精品青青草| 最新真实国产在线视频| 五月婷婷另类国产| 亚洲欧美天堂在线| 国产欧美日韩免费观看| 欧美肥婆姓交大片| 最近中文字幕av| 97久久久精品综合88久久| 亚洲蜜桃在线| 国产精品扒开腿做| 亚洲另类在线观看| 国产福利精品一区| 亚洲国产一区二区三区在线播| 成人激情视频在线观看| 色婷婷av一区二区三| 中文字幕一区二区三区蜜月 | 成人直播在线| 日本乱码高清不卡字幕| 奇米777第四色| 欧美成人久久| 91久久在线播放| av大片在线播放| 91黄色免费版| 精品人妻少妇嫩草av无码| 激情综合亚洲| 成人91视频| 宅男在线观看免费高清网站| 在线观看欧美日本| 欧美色图亚洲激情| 亚洲欧美日韩一区在线观看| 国产九色91| 黄色大片在线| 亚洲成人黄色网址| 亚洲free性xxxx护士hd| 粉嫩小泬无遮挡久久久久久| 亚洲日穴在线视频| 欧美色爱综合网| 亚洲综合伊人久久| 91综合网人人| 成人a级免费视频| 最新97超碰在线| 在线观看不卡视频| 欧美黄色一级生活片| 久久久久久穴| 日本免费一区二区三区| 偷拍精品精品一区二区三区| 亚洲免费视频一区二区| 一级片在线观看免费| 91久色porny| 日本精品www| 日韩电影不卡一区| 热久久这里只有| 黄色片在线免费观看| 麻豆精品在线看| 性欧美暴力猛交69hd| 成人av免费播放| 亚洲一级二级三级在线免费观看| 黑人巨大猛交丰满少妇| 国内综合精品午夜久久资源| 俄罗斯精品一区二区| 91在线三级| 日韩国产精品亚洲а∨天堂免| 天天综合天天干| 久久久亚洲精品一区二区三区| 日韩av播放器| 99久久激情| 99高清视频有精品视频| 国产黄大片在线观看| 亚洲品质视频自拍网| 中文天堂在线播放| 亚洲美女区一区| 亚洲欧美日韩偷拍| 亚洲欧美日韩精品一区二区| 水蜜桃亚洲一二三四在线| 亚洲日韩中文字幕一区| 久久久久久网站| 国内三级在线观看| 欧美一区二区三区免费观看视频 | 日本在线精品视频| 天堂中文8资源在线8| 日韩美女视频在线| 天堂网中文字幕| 亚洲啪啪综合av一区二区三区| 亚洲日本久久久| 免费在线欧美视频| 午夜激情综合网| av免费观看网| 久久国产亚洲| 韩日午夜在线资源一区二区| 国产成人免费9x9x人网站视频| 久久视频精品在线| 欧美zozo| 日韩欧美国产精品| 波多野结衣网站| 亚洲第一久久影院| 天天操天天摸天天舔| 不卡的av在线播放| 色综合五月婷婷| 久久亚洲二区| 日韩国产一级片| 一区二区中文字| 日韩性感在线| 日韩mv欧美mv国产网站| 成人在线中文字幕| av免费在线一区| 4444欧美成人kkkk| 亚洲卡一卡二| www日韩欧美| 狠狠狠综合7777久夜色撩人| 日韩欧美美女一区二区三区| 亚洲综合成人av| 日韩欧美aaa| 日本少妇全体裸体洗澡| 亚洲天堂久久久久久久| 手机看片福利视频| 久久天天做天天爱综合色| 成人高清在线观看视频| 七七婷婷婷婷精品国产| 亚洲欧美视频在线| 九九热最新地址| 国产精品网友自拍| 国产又粗又猛又爽又黄av| av网站一区二区三区| 91视频免费入口| 国产一区欧美一区| 免费网站在线观看黄| 麻豆久久久久久| 无限资源日本好片| 日本亚洲视频在线| 日韩精品无码一区二区三区免费| 国产女优一区| 日本网站免费在线观看| 亚洲第一区色| 热99这里只有精品| 亚洲精品婷婷| 男人揉女人奶房视频60分| 一区二区亚洲精品| 日韩国产欧美亚洲| 国产日韩一区| 大肉大捧一进一出好爽动态图| 亚洲一区二区三区四区五区午夜 | 免费毛片一区二区三区久久久| 久久影视三级福利片| 国产美女在线精品免费观看| eeuss鲁片一区二区三区| 国产精品区一区| 精品福利一区| 久久久精品国产一区二区三区| 日韩精选在线| 337p亚洲精品色噜噜| 视频二区在线播放| 美腿丝袜在线亚洲一区 | 日本在线视频免费| 午夜不卡av在线| 一级成人黄色片| 欧洲一区二区三区免费视频| 亚洲一区在线观| 欧美一二三区精品| 欧性猛交ⅹxxx乱大交| 日韩国产激情在线| 最新电影电视剧在线观看免费观看| 日韩资源在线观看| 尤物视频在线看| 久久全国免费视频| 天天免费亚洲黑人免费| 91九色蝌蚪国产| 久久悠悠精品综合网| 欧美污视频久久久| 国产精品成人av| 男人添女荫道口图片| 日韩主播视频在线| 中文字幕第22页| 99国产精品99久久久久久| 精品无码在线观看| 亚洲卡通欧美制服中文| 成人免费看片98欧美| 欧美日韩一区二区三区高清 | 欧美精品在欧美一区二区| 国产亚洲精品v| 91精品无人成人www| 国产91对白在线观看九色| 三级黄色片网站| 日韩一区有码在线| 国产成人在线免费视频| 欧美日韩一区二区三区在线| 亚洲乱码在线观看| 国产午夜精品全部视频在线播放| 成人免费看片| 日韩免费中文字幕| 91成人午夜| 亚洲一区精品视频| 99在线精品视频在线观看| 美女在线视频一区二区| 99免费精品视频| 综合五月激情网| 91国偷自产一区二区开放时间 | 欧美极品第一页| 神马久久久久久久久久久| 黄色成人91| 在线免费观看av的网站| www.久久精品| 欧洲猛交xxxx乱大交3| 91国产成人在线| 涩涩视频免费看| 欧美成人在线免费| 久久69成人| 欧美在线3区| 99人久久精品视频最新地址| 无码人妻一区二区三区在线视频| 久久久精品综合| 国产一级片免费观看| 91精品国产综合久久精品性色| 撸视在线观看免费视频| 国内精品在线一区| 91精品短视频| 亚洲色婷婷久久精品av蜜桃| 美女国产一区二区| 一区二区三区四区免费| 精品国产乱码久久久久久虫虫漫画 | 国产三区在线观看| 国产精品老女人视频| 蜜臀久久99精品久久一区二区| 成年人网站国产| 国产成人在线看| 国产成人自拍网站| 制服丝袜中文字幕一区| 欧美日韩欧美| 国产精品久久久久久一区二区| 女人丝袜激情亚洲| 日本不卡在线观看视频| 99re这里只有精品6| 国产午夜精品一区二区理论影院| 日韩欧美国产精品| 美女精品导航| 国产精品一区二区三区免费| 国语精品一区| 午夜男人的天堂| 精品福利在线观看| 五月天婷婷在线播放| 98精品在线视频| 天堂日韩电影| 一本久道综合色婷婷五月| 久久久精品免费观看| 日韩黄色片网站| 色播久久人人爽人人爽人人片视av| 高清成人在线| 亚洲精品欧美精品| 久久99精品久久久久久国产越南| 久久成人小视频| 4438亚洲最大| 黄网av在线| 国外成人在线视频网站| 国产一级久久| 欧美激情视频二区| 在线播放中文字幕一区| 成人短视频在线观看| 国产精品av一区| 午夜综合激情| 欧美黄色高清视频| 91精品国产综合久久国产大片| 新版中文在线官网| 久久av一区二区| 美女一区二区视频| 曰本女人与公拘交酡| 日韩av有码在线| 国产极品嫩模在线观看91精品| 国产成人免费高清视频| 成人精品视频一区| 成人自拍爱视频| 国精产品一区一区三区四川| 视频在线一区二区三区| 国产精品白丝jk白祙喷水网站| 日韩精品在线不卡| 国产亚洲精品va在线观看| 精品成人18| www黄色av| 亚洲欧美一区二区三区久本道91 | 日韩黄色三级| 国产精品久久久久7777| 国产亚洲综合av| 国产激情视频在线播放| 青青草成人在线| 在线精品国产| 成人h动漫精品一区| 欧美日韩电影在线| 成人ssswww在线播放| 亚洲视频在线二区| aaa欧美日韩| 97人妻精品一区二区三区软件| 97视频在线观看免费| 欧美岛国激情| 日本aaa视频| 日韩欧美视频一区| 成人做爰视频www| 水蜜桃色314在线观看| 国产精品久久久久影院老司 | 国产一区二区三区精品在线|