支付页面
qrcode生成,剪贴板sdk
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
import { _decorator, Component, Node, Sprite, Label, Button } from 'cc';
|
||||
import { QRCodeGenerator } from '../../utils/qrcodeGenerator';
|
||||
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
/**
|
||||
* 二维码生成器测试演示
|
||||
* 展示如何使用 QRCodeGenerator 工具类
|
||||
*/
|
||||
@ccclass('QRCodeGeneratorTest')
|
||||
export class QRCodeGeneratorTest extends Component {
|
||||
|
||||
@property(Node)
|
||||
qrCodeContainer: Node = null!;
|
||||
|
||||
@property(Button)
|
||||
generateBtn: Button = null!;
|
||||
|
||||
@property(Label)
|
||||
statusLabel: Label = null!;
|
||||
|
||||
private testTexts = [
|
||||
'https://example.com',
|
||||
'Hello World!',
|
||||
'这是一个中文测试',
|
||||
'QR Code Generator Test - 二维码生成器测试',
|
||||
JSON.stringify({ name: 'test', value: 123, timestamp: Date.now() })
|
||||
];
|
||||
|
||||
private currentIndex = 0;
|
||||
|
||||
start() {
|
||||
if (this.generateBtn) {
|
||||
this.generateBtn.node.on(Button.EventType.CLICK, this.onGenerateClick, this);
|
||||
}
|
||||
|
||||
// 初始生成第一个二维码
|
||||
this.generateQRCode();
|
||||
}
|
||||
|
||||
private onGenerateClick() {
|
||||
this.currentIndex = (this.currentIndex + 1) % this.testTexts.length;
|
||||
this.generateQRCode();
|
||||
}
|
||||
|
||||
private generateQRCode() {
|
||||
if (!this.qrCodeContainer) {
|
||||
this.updateStatus('错误: 二维码容器节点未设置');
|
||||
return;
|
||||
}
|
||||
|
||||
// 清空容器
|
||||
this.qrCodeContainer.removeAllChildren();
|
||||
|
||||
const testText = this.testTexts[this.currentIndex];
|
||||
this.updateStatus(`正在生成二维码: ${testText.substring(0, 30)}...`);
|
||||
|
||||
try {
|
||||
// 方法1: 生成 Sprite 组件(包含节点)- 异步版本
|
||||
QRCodeGenerator.generateQRCodeSprite(testText, 200, 8, (qrSprite) => {
|
||||
if (qrSprite) {
|
||||
// 将生成的 Sprite 节点添加到容器中
|
||||
qrSprite.node.setParent(this.qrCodeContainer);
|
||||
qrSprite.node.setPosition(0, 0, 0);
|
||||
|
||||
this.updateStatus(`✓ 成功生成二维码 (${this.currentIndex + 1}/${this.testTexts.length})`);
|
||||
|
||||
// 打印一些调试信息
|
||||
console.log('QRCode生成成功:', {
|
||||
text: testText,
|
||||
spriteFrame: qrSprite.spriteFrame,
|
||||
size: qrSprite.spriteFrame?.texture?.width + 'x' + qrSprite.spriteFrame?.texture?.height
|
||||
});
|
||||
} else {
|
||||
this.updateStatus('✗ 生成二维码失败');
|
||||
}
|
||||
});
|
||||
|
||||
// 演示方法2: 生成 SpriteFrame 并应用到现有节点(异步版本)
|
||||
// QRCodeGenerator.generateQRCodeSpriteFrame(testText, 200, 8, (spriteFrame) => {
|
||||
// if (spriteFrame && existingSpriteNode) {
|
||||
// const sprite = existingSpriteNode.getComponent(Sprite);
|
||||
// if (sprite) {
|
||||
// sprite.spriteFrame = spriteFrame;
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
|
||||
// 演示方法3: 生成 Base64 字符串
|
||||
// const base64 = QRCodeGenerator.generateQRCodeBase64(testText, 200, 8);
|
||||
// console.log('QRCode Base64:', base64.substring(0, 100) + '...');
|
||||
|
||||
} catch (error) {
|
||||
console.error('QRCode生成测试失败:', error);
|
||||
this.updateStatus('✗ 生成失败: ' + error.message);
|
||||
}
|
||||
}
|
||||
|
||||
private updateStatus(message: string) {
|
||||
if (this.statusLabel) {
|
||||
this.statusLabel.string = message;
|
||||
}
|
||||
console.log('QRCodeTest:', message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 静态方法示例:在其他地方直接调用
|
||||
*/
|
||||
public static createQRCodeExample() {
|
||||
// 示例1: 生成网址二维码(异步)
|
||||
QRCodeGenerator.generateQRCodeSprite('https://www.example.com', 256, 4, (urlQR) => {
|
||||
console.log('URL二维码生成完成:', urlQR);
|
||||
});
|
||||
|
||||
// 示例2: 生成文本二维码,自定义尺寸(异步)
|
||||
QRCodeGenerator.generateQRCodeSpriteFrame('Hello World!', 300, 10, (textQR) => {
|
||||
console.log('文本二维码生成完成:', textQR);
|
||||
});
|
||||
|
||||
// 示例3: 生成Base64格式二维码(同步)
|
||||
const base64QR = QRCodeGenerator.generateQRCodeBase64('测试数据', 150, 5);
|
||||
console.log('Base64二维码生成完成:', base64QR.substring(0, 100) + '...');
|
||||
|
||||
return { message: '二维码生成中,请查看控制台日志' };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user