日志控制

This commit is contained in:
chen wei bo
2025-09-21 20:36:25 +08:00
parent e78f6b937e
commit 93bfe3174f
23 changed files with 91 additions and 81 deletions
+1 -1
View File
@@ -64,7 +64,7 @@ export default class GameRootUI extends Component {
callback?: Function
) {
if (!this.defaultView) {
console.warn("GameRootUI: defaultView not found");
logger.warn("GameRootUI: defaultView not found");
callback && callback();
return;
}
+2 -2
View File
@@ -89,12 +89,12 @@ export default class HttpUnit {
}
};
xhr.onerror = (error) => {
console.error("http request onerror");
logger.error("http request onerror");
SubManager.ShowPrompt("网络错误,请检查网络连接");
reason(error)
};
xhr.ontimeout = (e) => {
console.error("http request timeout");
logger.error("http request timeout");
SubManager.ShowPrompt("网络错误,请检查网络连接");
reason(e)
}
+2 -1
View File
@@ -1,5 +1,6 @@
import { _decorator, Component, Label, Node } from "cc";
import LanguageUtils, { LanguageType } from "./LanguageUtils";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property, requireComponent } = _decorator;
@@ -30,7 +31,7 @@ export class LanguageLabel extends Component {
onLoad() {
this.label = this.getComponent(Label);
if (!this.label) {
console.error("LanguageLabel: Label component not found!");
logger.error("LanguageLabel: Label component not found!");
return;
}
+11 -10
View File
@@ -8,6 +8,7 @@ const { ccclass, property, disallowMultiple, menu, executionOrder, requireCompon
import { Node, Component, Enum, tween, _decorator, EventHandler, Tween, ScrollView, Prefab, Layout, Vec2, Size, NodePool, isValid, instantiate, Vec3, Widget, UITransform, CCFloat, CCBoolean, CCInteger } from 'cc';
import { DEV } from 'cc/env';
import ScrollViewListItem from './ScrollviewListItem';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
enum TemplateType {
NODE = 1,
@@ -263,7 +264,7 @@ export default class HXZ_ScrollViewList extends Component {
if (!t.checkInited(false))
return;
if (val == null || val < 0) {
console.error('numItems set the wrong::', val);
logger.error('numItems set the wrong::', val);
return;
}
t._actualNumItems = t._numItems = val;
@@ -464,7 +465,7 @@ export default class HXZ_ScrollViewList extends Component {
t.content = t._scrollView.content;
t._contentUt = t.content.getComponent(UITransform);
if (!t.content) {
console.error(t.node.name + "'s ScrollView unset content!");
logger.error(t.node.name + "'s ScrollView unset content!");
return;
}
@@ -728,7 +729,7 @@ export default class HXZ_ScrollViewList extends Component {
checkInited(printLog: boolean = true) {
if (!this._inited) {
if (printLog)
console.error('List initialization not completed!');
logger.error('List initialization not completed!');
return false;
}
return true;
@@ -1847,13 +1848,13 @@ export default class HXZ_ScrollViewList extends Component {
let t: any = this;
if (!t.checkInited() || t.cyclic || !t._virtual)
return console.error('This function is not allowed to be called!');
return logger.error('This function is not allowed to be called!');
if (!callFunc)
return console.error('CallFunc are not allowed to be NULL, You need to delete the corresponding index in the data array in the CallFunc!');
return logger.error('CallFunc are not allowed to be NULL, You need to delete the corresponding index in the data array in the CallFunc!');
if (t._aniDelRuning)
return console.warn('Please wait for the current deletion to finish!');
return logger.warn('Please wait for the current deletion to finish!');
let item: any = t.getItemByListId(listId);
let listItem: ScrollViewListItem;
@@ -1969,7 +1970,7 @@ export default class HXZ_ScrollViewList extends Component {
let pos = t.getItemPos(listId);
if (!pos) {
return DEV && console.error('pos is null', listId);
return DEV && logger.error('pos is null', listId);
}
let targetX: number, targetY: number;
@@ -2150,7 +2151,7 @@ export default class HXZ_ScrollViewList extends Component {
if (!t.checkInited())
return;
if (t._slideMode != SlideType.PAGE)
return console.error('This function is not allowed to be called, Must SlideMode = PAGE!');
return logger.error('This function is not allowed to be called, Must SlideMode = PAGE!');
if (pageNum < 0 || pageNum >= t._numItems)
return;
if (t.curPageNum == pageNum)
@@ -2168,9 +2169,9 @@ export default class HXZ_ScrollViewList extends Component {
if (!t.checkInited())
return;
if (!t._itemTmp)
return console.error('Unset template item!');
return logger.error('Unset template item!');
if (!t.renderEvent)
return console.error('Unset Render-Event!');
return logger.error('Unset Render-Event!');
t._customSize = {};
let temp: any = instantiate(t._itemTmp);
let ut: UITransform = temp.getComponent(UITransform);
@@ -1,4 +1,5 @@
import { _decorator } from "cc";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator;
@@ -85,7 +86,7 @@ export default class li_EventManager {
try {
handler[0].apply(handler[1], param);
} catch (e) {
console.error("innerErr:" + e.stack);
logger.error("innerErr:" + e.stack);
}
}
if (handlerArray.length != length) {
+1 -1
View File
@@ -362,7 +362,7 @@ export default class ResManager {
loadRemoteAudio(url: string, cb: Function = null) {
assetManager.loadRemote<AudioClip>(url, (err, res: AudioClip) => {
if (err) {
console.error(err);
logger.error(err);
return;
}
cb && cb(res);
+3 -2
View File
@@ -8,6 +8,7 @@ import { CommAdDialog } from "./Item/CommAdDialog";
import Utils from "../Main/Common/Utils";
import { InnerMsgCode } from "../Main/Config/InnerMsgCode";
import { TipsPanel } from "../chat18x/ui/panels/TipsPanel";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator;
@@ -34,7 +35,7 @@ export default class SubManager {
/**通用确认框 { content: string, strYes?: string, strNo?: string, yesCallback?: Function, noCallback?: Function, closeCallback?: Function } */
public static ShowConfirm(param: any) {
if (!GameRootUI.I) {
console.warn("GameRootUI还未初始化", param);
logger.warn("GameRootUI还未初始化", param);
return;
}
ResManager.I.loadSubpackagePrefab("item/ConfirmDialog", (n_node: Node) => {
@@ -48,7 +49,7 @@ export default class SubManager {
/**通用广告框 { content: string, strAd?: string, strLeft?: string, adCallback?: Function, leftCallback?: Function, closeCallback?: Function } */
public static ShowCommonAdDialog(param: any) {
if (!GameRootUI.I) {
console.warn("GameRootUI还未初始化", param);
logger.warn("GameRootUI还未初始化", param);
return;
}
ResManager.I.loadSubpackagePrefab("item/CommAdDialog", (n_node: Node) => {
+1 -1
View File
@@ -95,7 +95,7 @@ export class SceneBgVideoLayer extends li_BaseView {
}
) {
if (!this.videoPlayer) {
console.error("SceneBgVideoLayer: VideoPlayer未初始化");
logger.error("SceneBgVideoLayer: VideoPlayer未初始化");
return;
}
@@ -6,6 +6,7 @@
import { DataId, DataManager } from "../data/DataManager";
import { GlobalData } from "../data/GlobalData";
import { ConfigManager } from "../manager/ConfigManager";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export interface AIConfig {
/** API密钥 */
@@ -60,7 +61,7 @@ export class ApiConfig {
).getTimeout(), // 30秒
};
//console.warn(this.config.apiKey);
//logger.warn(this.config.apiKey);
}
/**
@@ -97,7 +98,7 @@ export class ApiConfig {
if (temperature >= 0 && temperature <= 2) {
this.config.temperature = temperature;
} else {
console.warn("Temperature should be between 0 and 2");
logger.warn("Temperature should be between 0 and 2");
}
}
@@ -110,11 +111,11 @@ export class ApiConfig {
*/
public validateConfig(): boolean {
if (!this.config.apiKey || this.config.apiKey.trim() === "") {
console.error("API key is missing");
logger.error("API key is missing");
return false;
}
if (!this.config.model || this.config.model.trim() === "") {
console.error("Model name is missing");
logger.error("Model name is missing");
return false;
}
return true;
+1 -1
View File
@@ -269,7 +269,7 @@ export class ChatAIService {
message,
response.text
).catch((emotionError) => {
console.warn(
logger.warn(
`Failed to update emotion for role ${roleId}:`,
emotionError
);
@@ -357,7 +357,7 @@ export class ChatController {
public loadDialogsFromHistory(roleId?: number): void {
const targetRoleId = roleId || this.chatModel.getCurrentRoleId();
if (!targetRoleId) {
console.warn("Cannot load dialogs: no active role");
logger.warn("Cannot load dialogs: no active role");
return;
}
@@ -508,7 +508,7 @@ export class ChatController {
* @param error 错误对象
*/
private handleError(error: Error): void {
console.error("ChatController error:", error);
logger.error("ChatController error:", error);
this.callback?.onError(error);
}
}
@@ -354,7 +354,7 @@ export class EmotionAIService {
}
}
} catch (error) {
console.warn(`Failed to get role name for ${roleId}:`, error);
logger.warn(`Failed to get role name for ${roleId}:`, error);
}
return "AI";
}
@@ -3,6 +3,7 @@
*/
import { BaseData } from "./BaseData";
import proto from "db://assets/Scripts/proto/proto.pb.js";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
// 数据结构
export interface AiCharacters {
@@ -69,7 +70,7 @@ export class AiCharacterData extends BaseData {
try {
parsed = JSON.parse(data.data);
} catch (e) {
console.warn("AiCharacterData JSON 解析失败", e);
logger.warn("AiCharacterData JSON 解析失败", e);
return;
}
// 解析数据
+5 -5
View File
@@ -108,7 +108,7 @@ export class ChatModel {
//const roleDetail = ConfigManager.tables.TbGirlsDetail.get(roleId);
if (!girlData) {
console.error(`ChatModel: Role data not found for roleId ${girlId}`);
logger.error(`ChatModel: Role data not found for roleId ${girlId}`);
return null;
}
@@ -124,7 +124,7 @@ export class ChatModel {
return newRoleData;
} catch (error) {
console.error(
logger.error(
`ChatModel: Failed to create role data for ${girlId}:`,
error
);
@@ -208,18 +208,18 @@ export class ChatModel {
public addDialog(isPlayer: boolean, content: string, roleId?: number): void {
const targetRoleId = roleId || this.currentGirlId;
if (!targetRoleId) {
console.warn("ChatModel: Cannot add dialog - no active role");
logger.warn("ChatModel: Cannot add dialog - no active role");
return;
}
if (!content || content.trim() === "") {
console.warn("ChatModel: Cannot add empty dialog content");
logger.warn("ChatModel: Cannot add empty dialog content");
return;
}
const roleData = this.rolesData.get(targetRoleId);
if (!roleData) {
console.warn(`ChatModel: Role data not found for roleId ${targetRoleId}`);
logger.warn(`ChatModel: Role data not found for roleId ${targetRoleId}`);
return;
}
+2 -2
View File
@@ -92,7 +92,7 @@ export class DataManager {
*/
private register<T extends BaseData>(dataId: string, ctor: DataCtor<T>): void {
if (this._config.has(dataId)) {
console.warn(`[DataManager] 重复注册数据ID: ${dataId},将覆盖旧构造器`);
logger.warn(`[DataManager] 重复注册数据ID: ${dataId},将覆盖旧构造器`);
}
this._config.set(dataId, ctor);
}
@@ -108,7 +108,7 @@ export class DataManager {
// 缓存没有→ 查找构造器
const Ctor = this._config.get(dataId) as DataCtor<T> | undefined;
if (!Ctor) {
console.warn(`[DataManager] 未找到 dataId 的构造器配置: ${dataId}`);
logger.warn(`[DataManager] 未找到 dataId 的构造器配置: ${dataId}`);
return null;
}
@@ -127,7 +127,7 @@ export class ConfigManager {
ctor: DataCtor<T>
): void {
if (this._config.has(configId)) {
console.warn(
logger.warn(
`[ConfigManager] 重复注册数据ID: ${configId},将覆盖旧构造器`
);
}
@@ -147,7 +147,7 @@ export class ConfigManager {
// 缓存没有→ 查找构造器
const Ctor = this._config.get(configId) as DataCtor<T> | undefined;
if (!Ctor) {
console.warn(`[ConfigManager] 未找到 configId 的构造器配置: ${configId}`);
logger.warn(`[ConfigManager] 未找到 configId 的构造器配置: ${configId}`);
return null;
}
@@ -316,12 +316,12 @@ export class NavigationManager {
animationConfig?: SubPanelAnimationConfig
) {
if (!panelName) {
console.error("[NavigationManager] openSubPanel: panelName is empty");
logger.error("[NavigationManager] openSubPanel: panelName is empty");
return;
}
if (!basePanel || !basePanel.isValid) {
console.error("[NavigationManager] openSubPanel: basePanel is invalid");
logger.error("[NavigationManager] openSubPanel: basePanel is invalid");
return;
}
@@ -335,7 +335,7 @@ export class NavigationManager {
const callback = (n: Node) => {
if (!n || !n.isValid) {
console.error(
logger.error(
"[NavigationManager] openSubPanel: created panel is invalid"
);
return;
@@ -352,7 +352,7 @@ export class NavigationManager {
if (basePanelType) {
this.subPanelMapping.set(n, basePanelType);
} else {
console.warn(
logger.warn(
`[NavigationManager] 无法确定basePanel类型: ${basePanel.name}`
);
}
@@ -646,7 +646,7 @@ export class NavigationManager {
}
if (!panelNode || !panelNode.isValid) {
console.warn("[NavigationManager] closeSubPanel: panelNode is invalid");
logger.warn("[NavigationManager] closeSubPanel: panelNode is invalid");
return;
}
@@ -676,7 +676,7 @@ export class NavigationManager {
panel.close();
}
} catch (error) {
console.error("[NavigationManager] closeSubPanel error:", error);
logger.error("[NavigationManager] closeSubPanel error:", error);
}
});
}
@@ -700,7 +700,7 @@ export class NavigationManager {
this.subPanelDic.delete(baseNode);
}
} else {
console.warn(
logger.warn(
`[NavigationManager] ${panelNode.name} 不在子页面列表中`
);
}
@@ -734,7 +734,7 @@ export class NavigationManager {
}
private getPanelType(node: Node): PanelType {
if (!node || !node.isValid) {
console.warn("[NavigationManager] getPanelType: node is invalid");
logger.warn("[NavigationManager] getPanelType: node is invalid");
return null;
}
@@ -748,7 +748,7 @@ export class NavigationManager {
case "PersonalPanel":
return PanelType.PERSONAL;
default:
console.warn(
logger.warn(
`[NavigationManager] Unknown panel type for node: ${node.name}`
);
return null;
@@ -308,7 +308,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
private switchVideoByEmotion(emotion: VideoEmotion): void {
if (!this.videoLayer) {
console.warn("Cannot switch video: missing video player");
logger.warn("Cannot switch video: missing video player");
return;
}
// Get video data from ChatModel through ChatController
@@ -472,7 +472,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
* @param error 错误信息
*/
public onError(error: Error): void {
console.error("Chat error:", error);
logger.error("Chat error:", error);
// 出错时加载动画会被自动移除,可以在这里显示错误提示给用户
}
@@ -133,7 +133,7 @@ export class GirlDetailPanel extends li_BaseView {
}
// 如果没有 videoArea,使用默认尺寸
console.warn("GirlDetailPanel: videoArea 未设置,使用默认尺寸");
logger.warn("GirlDetailPanel: videoArea 未设置,使用默认尺寸");
return new Size(600, 800);
}
@@ -7,6 +7,7 @@ import {
isValid,
Node,
} from "cc";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass } = _decorator;
@@ -28,12 +29,12 @@ export class ParentResize extends Component {
this.uiTransform = this.getComponent(UITransform);
if (!this.sprite) {
console.warn("ParentResize: 未找到 Sprite 组件");
logger.warn("ParentResize: 未找到 Sprite 组件");
return;
}
if (!this.uiTransform) {
console.warn("ParentResize: 未找到 UITransform 组件");
logger.warn("ParentResize: 未找到 UITransform 组件");
return;
}
@@ -41,11 +42,11 @@ export class ParentResize extends Component {
if (this.node.parent) {
this.parentTransform = this.node.parent.getComponent(UITransform);
if (!this.parentTransform) {
console.warn("ParentResize: 父物体未找到 UITransform 组件");
logger.warn("ParentResize: 父物体未找到 UITransform 组件");
return;
}
} else {
console.warn("ParentResize: 未找到父物体");
logger.warn("ParentResize: 未找到父物体");
return;
}
}
@@ -119,7 +120,7 @@ export class ParentResize extends Component {
this.lastParentSize.set(0, 0); // 重置上次记录的尺寸
this.adjustToParent();
} else {
console.warn("ParentResize: 新父物体未找到 UITransform 组件");
logger.warn("ParentResize: 新父物体未找到 UITransform 组件");
}
}
}
@@ -7,6 +7,7 @@ import {
Size,
isValid,
} from "cc";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass } = _decorator;
@@ -27,12 +28,12 @@ export class SpriteResize extends Component {
this.uiTransform = this.getComponent(UITransform);
if (!this.sprite) {
console.warn("SpriteResize: 未找到 Sprite 组件");
logger.warn("SpriteResize: 未找到 Sprite 组件");
return;
}
if (!this.uiTransform) {
console.warn("SpriteResize: 未找到 UITransform 组件");
logger.warn("SpriteResize: 未找到 UITransform 组件");
return;
}
}
@@ -7,6 +7,7 @@ import {
view,
UIOpacity,
} from "cc";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator;
@@ -33,7 +34,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideInFromRight");
logger.warn("UITransitionHelper: Invalid node for slideInFromRight");
return;
}
@@ -73,7 +74,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideOutToLeft");
logger.warn("UITransitionHelper: Invalid node for slideOutToLeft");
return;
}
@@ -115,7 +116,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideInFromLeft");
logger.warn("UITransitionHelper: Invalid node for slideInFromLeft");
return;
}
@@ -155,7 +156,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideOutToRight");
logger.warn("UITransitionHelper: Invalid node for slideOutToRight");
return;
}
@@ -197,7 +198,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideInFromTop");
logger.warn("UITransitionHelper: Invalid node for slideInFromTop");
return;
}
@@ -237,7 +238,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideOutToTop");
logger.warn("UITransitionHelper: Invalid node for slideOutToTop");
return;
}
@@ -279,7 +280,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideInFromBottom");
logger.warn("UITransitionHelper: Invalid node for slideInFromBottom");
return;
}
@@ -319,7 +320,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideOutToBottom");
logger.warn("UITransitionHelper: Invalid node for slideOutToBottom");
return;
}
@@ -361,7 +362,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for fadeIn");
logger.warn("UITransitionHelper: Invalid node for fadeIn");
return;
}
@@ -402,7 +403,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for fadeOut");
logger.warn("UITransitionHelper: Invalid node for fadeOut");
return;
}
@@ -440,7 +441,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for scaleIn");
logger.warn("UITransitionHelper: Invalid node for scaleIn");
return;
}
@@ -471,7 +472,7 @@ export class UITransitionHelper {
callback?: Function
): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for scaleOut");
logger.warn("UITransitionHelper: Invalid node for scaleOut");
return;
}
@@ -493,7 +494,7 @@ export class UITransitionHelper {
*/
public static stopAllTweens(node: Node): void {
if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for stopAllTweens");
logger.warn("UITransitionHelper: Invalid node for stopAllTweens");
return;
}
+13 -12
View File
@@ -1,5 +1,6 @@
import { Sprite, SpriteFrame, Texture2D, ImageAsset, Node } from 'cc';
import qrcode from 'qrcode-generator';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/**
* 二维码生成工具类
@@ -17,7 +18,7 @@ export class QRCodeGenerator {
public static generateQRCodeSprite(text: string, size: number = 256, margin: number = 4, callback?: (sprite: Sprite | null) => void): void {
try {
if (!text || text.trim().length === 0) {
console.error('QRCodeGenerator: 文本内容不能为空');
logger.error('QRCodeGenerator: 文本内容不能为空');
callback && callback(null);
return;
}
@@ -36,12 +37,12 @@ export class QRCodeGenerator {
callback && callback(sprite);
} catch (error) {
console.error('QRCodeGenerator: 创建Sprite组件失败', error);
logger.error('QRCodeGenerator: 创建Sprite组件失败', error);
callback && callback(null);
}
});
} catch (error) {
console.error('QRCodeGenerator: 生成二维码Sprite失败', error);
logger.error('QRCodeGenerator: 生成二维码Sprite失败', error);
callback && callback(null);
}
}
@@ -56,13 +57,13 @@ export class QRCodeGenerator {
public static generateQRCodeSpriteFrame(text: string, size: number = 256, margin: number = 4, callback?: (spriteFrame: SpriteFrame | null) => void): void {
try {
if (!text || text.trim().length === 0) {
console.error('QRCodeGenerator: 文本内容不能为空');
logger.error('QRCodeGenerator: 文本内容不能为空');
callback && callback(null);
return;
}
if (size <= 0 || size > 2048) {
console.error('QRCodeGenerator: 尺寸必须在1-2048之间');
logger.error('QRCodeGenerator: 尺寸必须在1-2048之间');
callback && callback(null);
return;
}
@@ -83,7 +84,7 @@ export class QRCodeGenerator {
const ctx = canvas.getContext('2d');
if (!ctx) {
console.error('QRCodeGenerator: 无法获取Canvas上下文');
logger.error('QRCodeGenerator: 无法获取Canvas上下文');
callback && callback(null);
return;
}
@@ -124,13 +125,13 @@ export class QRCodeGenerator {
callback && callback(spriteFrame);
} catch (error) {
console.error('QRCodeGenerator: 创建纹理失败', error);
logger.error('QRCodeGenerator: 创建纹理失败', error);
callback && callback(null);
}
};
img.onerror = () => {
console.error('QRCodeGenerator: 图片加载失败');
logger.error('QRCodeGenerator: 图片加载失败');
callback && callback(null);
};
@@ -138,7 +139,7 @@ export class QRCodeGenerator {
img.src = canvas.toDataURL('image/png');
} catch (error) {
console.error('QRCodeGenerator: 生成二维码SpriteFrame失败', error);
logger.error('QRCodeGenerator: 生成二维码SpriteFrame失败', error);
callback && callback(null);
}
}
@@ -153,7 +154,7 @@ export class QRCodeGenerator {
public static generateQRCodeBase64(text: string, size: number = 256, margin: number = 4): string {
try {
if (!text || text.trim().length === 0) {
console.error('QRCodeGenerator: 文本内容不能为空');
logger.error('QRCodeGenerator: 文本内容不能为空');
return '';
}
@@ -173,7 +174,7 @@ export class QRCodeGenerator {
const ctx = canvas.getContext('2d');
if (!ctx) {
console.error('QRCodeGenerator: 无法获取Canvas上下文');
logger.error('QRCodeGenerator: 无法获取Canvas上下文');
return '';
}
@@ -199,7 +200,7 @@ export class QRCodeGenerator {
// 返回Base64字符串
return canvas.toDataURL('image/png');
} catch (error) {
console.error('QRCodeGenerator: 生成二维码Base64失败', error);
logger.error('QRCodeGenerator: 生成二维码Base64失败', error);
return '';
}
}