cocosCreator動態生成二維碼

cocosCreator 版本:3.7.2
開發語言:typeScript

我們在游戲開發中,經常會生成一個專屬于玩家個人的二維碼,比如說推廣、充值等功能。

接到這個任務,在網上找了下,還是有很多教程的。但是這些教程大部分都是用QRCode二維碼生成庫,將js文件設置成插件的形式。然后用畫圖組件Graphics把二維碼畫出來。

我這里也是用的同樣的思路,但是沒有用插件的形式。下面說說具體的方法:

新建工程

打開cocosCreator,創建一個新工程。在scene中添加一個精靈節點,將精靈設置為白色。再在精靈上添加一個Graphics節點。如下圖參考圖

注意:這里要設置要精靈和繪圖節點的尺寸,最好是2的倍數,而且建議將Graphics的錨點設置為(0,0)

核心代碼

   import { _decorator, Component, Node,Graphics, Color, UITransform } from 'cc';
import { QRCode } from './qr/QRCode';
const { ccclass, property } = _decorator;
let QRErrorCorrectLevel = {L: 1,M: 0,Q: 3,H: 2
};
@ccclass('qrCode')
export class qrCode extends Component {@property(Graphics)graphics:Graphics = null;start() {this.qrCode("https://lengmo714.top");}private qrCode(url) {let node = this.graphics;var qrcode = new QRCode(-1, QRErrorCorrectLevel.H);qrcode.addData(url);qrcode.make();var ctx = node.getComponent(Graphics)!;ctx.fillColor = Color.BLACK;var tileW = node.getComponent(UITransform)!.width / qrcode.getModuleCount();var tileH = node.getComponent(UITransform)!.height / qrcode.getModuleCount();// draw in the Graphicsfor (var row = 0; row < qrcode.getModuleCount(); row++) {for (var col = 0; col < qrcode.getModuleCount(); col++) {if (qrcode.isDark(row, col)) {var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW));var h = (Math.ceil((row + 1) * tileW) - Math.floor(row * tileW));ctx.rect(Math.round(col * tileW), Math.round(row * tileH), w, h);ctx.fill();} else {// ctx.fillColor = cc.Color.WHITE;}var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW));}}}
}

注意,這里還是要用到畫二維碼的插件庫,只是我沒有用這個插件庫,qrcode.js代碼轉成了ts代碼。

qrcode.js文件下載地址

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15289.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15289.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15289.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ollydbg動態分析MessageBoxA輸出hellow world

一、目的 找到main函數找到調用的MessageBoxA函數 測試源碼 #include <iostream> #include <windows.h>int main() {MessageBoxA(NULL, "Hellow World", "Title", MB_OK);return 1; }二、快捷鍵 指令快捷鍵說明RestartCtrlF2重新開始調試S…

buu[HCTF 2018]WarmUp(代碼審計)

buu[HCTF 2018]WarmUp&#xff08;代碼審計&#xff09; 題目 訪問source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php…

MySQL基礎學習: SET FOREIGN_KEY_CHECKS = 0

文章目錄 一、介紹二、使用方法三、注意事項 一、介紹 在MySQL中&#xff0c;SET FOREIGN_KEY_CHECKS 0; 是一個特殊的命令&#xff0c;用于臨時禁用外鍵約束檢查。這在你執行一些涉及多個表并且可能違反外鍵約束的批量操作時非常有用。 為什么需要禁用外鍵約束檢查&#xf…

電腦鍵盤如何練習盲打?

電腦鍵盤如何練習盲打&#xff1f;盲打很簡單&#xff0c;跟著我做&#xff0c;今天教會你。 請看【圖1】&#xff1a; 【圖1】中&#xff0c;紅色方框就是8個基準鍵位&#xff0c;打字時我們左右手的8個手指就是放在這8個基準鍵位上&#xff0c;F鍵和J鍵上各有一個小突起&…

Spring6基礎筆記

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 輕量級開源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并創立&#xff0c;其目的是用于簡化 Java 企業級應用的開發難度和開發周期。Spring的用途不僅限于服務器端的開發…

mysql圖形化界面及將mysql注冊成后臺程序

安裝圖形化界面版本 右鍵新建數據庫 字符集使用utf8防止以后數據庫中存在中文字符導致亂碼 將mysql注冊成后臺程序 cmd進入命令行界面 切換路徑到cd /mysql/bin 將mysql注冊成后臺程序 mysqld.exe --install mysql1 (失敗&#xff0c;說明沒有權限) 以管理員身份打開成功…

ASP.NET防止流量攻擊的措施

請求速率限制&#xff1a; // 在 Global.asax.cs 文件中 Application_BeginRequest 方法中添加以下代碼 protected void Application_BeginRequest() {// 檢查請求頻率&#xff0c;限制每個 IP 地址的請求次數if (RequestThrottler.IsRequestLimitExceeded(Context.Request.Use…

如何跨過robots協議的限制爬取內容?

在討論如何“跨過robots協議的限制爬取內容”之前&#xff0c;重要的是強調遵循網絡禮儀和法律法規的必要性。robots協議&#xff08;Robots Exclusion Standard&#xff09;是網站所有者向網絡爬蟲&#xff08;包括搜索引擎和其他自動化工具&#xff09;傳達其爬取意愿的一種方…

SYSTEM文件夾介紹(sys文件夾、deley文件夾、USART 文件夾、SysTick、printf函數、fputc函數、半主機模式)

參考 http://t.csdnimg.cn/P9H6x 一、sys文件夾介紹 在上述介紹的 sys 文件夾中&#xff0c;涉及了一些與系統控制、中斷管理、低功耗模式、棧頂地址設置、系統時鐘初始化以及緩存配置等相關的函數。以下是對每個功能的簡要分析&#xff1a; 1.中斷類函數&#xff1a; sys_n…

CCF20230901——坐標變換(其一)

CCF20230901——坐標變換&#xff08;其一&#xff09; #include<bits/stdc.h> using namespace std; int main() {int n,m,x[101],y[101],x1[101],y1[101];cin>>n>>m;for(int i0;i<n;i)cin>>x1[i]>>y1[i];for(int j0;j<m;j)cin>>x[…

uniapp 高德地圖與百度地圖精準定位,高德地圖定位報錯

目前我這邊測試發現的問題 UNIAPP 獲取定位的代碼 在這里插入代碼片 data的參數 data() {return {id: 0, // 使用 marker點擊事件 需要填寫idtitle: map,latitude: 39.909,longitude: 116.39742,covers: [{latitude: 39.909,longitude: 116.39742,width: 50,height: 50,iconPa…

負反饋系統中運放的相位裕度仿真、環路增益的stb仿真

這里沒目錄標題 一、引言二、巴克豪森判據、最壞情況下的相位裕度、相位裕度三、相位裕度與開環&#xff0c;環路&#xff0c;閉環增益的關系四、環路增益、閉環增益和相位的仿真4.1 運放為雙入單出時4.1.1 系統的閉環增益4.1.2 stb仿真系統的環路增益和相位裕度&#xff08;環…

Python項目:數據可視化_下載數據【筆記】

源自《Python編程&#xff1a;從入門到實踐》 作者&#xff1a; Eric Matthes 02 下載數據 2.1 sitka_weather_07-2021_simple.csv from pathlib import Path import matplotlib.pyplot as plt import csv from datetime import datetimepath Path(D:\CH16\sitka_weather_0…

python web自動化(Allure報告)

Allure詳細安裝請看之前的博客 1.Allure配置與?? 運??例&#xff0c;?成allure報告 pip install allure-pytest -i https://mirrors.aliyun.com/pypi/simple/ 運??例&#xff0c;?成allure報告 # main.py import os import pytest if __name__ __m…

SpringBoot如何實現熱部署

熱部署 使用SpringBoot提供的DevTools實現熱部署 原理&#xff1a;實時監控classpath下文件的變化&#xff08;即編譯后的target目錄&#xff09;&#xff0c;如果發生變化則自動重啟 配置&#xff1a;添加DevTools的依賴即可&#xff08;需要開啟IDEA的自動編譯&#xff09…

ROS學習記錄:用C++實現IMU航向鎖定

前言 獲取IMU數據的C節點 在了解了如何獲取到IMU的姿態信息&#xff08;鏈接在上面&#xff09;后&#xff0c;接下來嘗試實現讓一個節點在訂閱IMU數據的時候&#xff0c;還能發布運動控制指令&#xff0c;使機器人能對姿態變化做出反應&#xff0c;達到一個航向鎖定的效果。 …

神奇動物在哪里,但導演是微軟

大數據產業創新服務媒體 ——聚焦數據 改變商業 一說到計算機視覺&#xff0c;大多數人第一時間聯想到的便是“人臉識別”、“自動駕駛“、道路檢測”等跟我們日常生活息息相關的關鍵詞。而在2024年的5月末&#xff0c;微軟在GitHub上面上傳了這樣一個計算機視覺的項目&#x…

2024年華為OD機試真題-停車場車輛統計-C++-OD統一考試(C卷D卷)

題目描述: 特定大小的停車場,數組cars[]表示,其中1表示有車,0表示沒車。車輛大小不一,小車占一個車位(長度1),貨車占兩個車位(長度2),卡車占三個車位(長度3),統計停車場最少可以停多少輛車,返回具體的數目。 輸入描述: 整型字符串數組cars[],其中1表示有車,0…

通過Python爬取公告內容

在網絡時代&#xff0c;信息獲取變得更加便捷。通過網絡爬蟲技術&#xff0c;我們可以從互聯網上快速獲取各種信息。本文將介紹如何使用 Python 爬蟲工具從指定網站上獲取公告內容&#xff0c;并提取其中的關鍵信息。 1. 簡介 在本文中&#xff0c;我們將使用 Python 的 requ…

幾個速度比較快的 Linux 開源鏡像站及支持的資源列表

搜狐開源鏡像站 https://mirrors.sohu.com/ File Name CPAN/ FreeBSD/ QpenBSD/ RockyL apache/ archlinux/ centos/ ceph/ cygwin/ debian/ debian–cd/ debian-security/ deepin/ deepin-cd/ docker-ce/ fedora/ fedora-epel/ gentoo/ lib/ mysql/ nginx/ opensuse/ php/ ubu…