diff --git a/assets/libs/gui/language/Language.ts b/assets/libs/gui/language/Language.ts index c5fda52..146098f 100644 --- a/assets/libs/gui/language/Language.ts +++ b/assets/libs/gui/language/Language.ts @@ -53,7 +53,7 @@ export class LanguageManager { * @param language 语言名 * @param callback 多语言资源数据加载完成回调 */ - setLanguage(language: string, callback: (success: boolean) => void) { + setLanguage(language: string, callback?: (success: boolean) => void) { if (language == null || language == "") { language = this._defaultLanguage; } @@ -68,7 +68,7 @@ export class LanguageManager { } if (language === LanguageData.current) { - callback(false); + callback && callback(false); return; } @@ -78,7 +78,7 @@ export class LanguageManager { LanguageData.current = language; this._languagePack.updateLanguage(language); this._languagePack.releaseLanguageAssets(oldLanguage); - callback(true); + callback && callback(true); }); } diff --git a/assets/libs/gui/language/LanguageData.ts b/assets/libs/gui/language/LanguageData.ts index 66bf54e..31cf80d 100644 --- a/assets/libs/gui/language/LanguageData.ts +++ b/assets/libs/gui/language/LanguageData.ts @@ -6,6 +6,7 @@ import { TTFFont } from "cc"; * @LastEditors: dgflash * @LastEditTime: 2023-08-22 16:37:40 */ + export class LanguageData { /** JSON资源目录 */ static path_json: string = "language/json"; @@ -49,4 +50,10 @@ export class LanguageData { return labId; } -} \ No newline at end of file +} + +export const LanguageType = [ + 'LanguageLabel', + 'LanguageSprite', + 'LanguageSpine' +] \ No newline at end of file diff --git a/assets/libs/gui/language/LanguageLabel.ts b/assets/libs/gui/language/LanguageLabel.ts index 93e6b24..51afb9a 100644 --- a/assets/libs/gui/language/LanguageLabel.ts +++ b/assets/libs/gui/language/LanguageLabel.ts @@ -28,7 +28,9 @@ export class LanguageLabel extends Component { }) set params(value: Array) { this._params = value; - if (!EDITOR) this.enabled = true; + if (!EDITOR) { + this._needUpdate = true; + } } get params(): Array { return this._params || []; @@ -42,7 +44,9 @@ export class LanguageLabel extends Component { } set dataID(value: string) { this._dataID = value; - if (!EDITOR) this.enabled = true; + if (!EDITOR) { + this._needUpdate = true; + } } get string(): string { @@ -59,11 +63,16 @@ export class LanguageLabel extends Component { return _string; } + /** 更新语言 */ + language() { + this._needUpdate = true; + } + /** 初始字体尺寸 */ initFontSize: number = 0; onLoad() { - this.enabled = true; + this._needUpdate = true; } /** @@ -86,16 +95,15 @@ export class LanguageLabel extends Component { ii.value = value; this._params.push(ii); } - this.enabled = true; - } - - language() { - this.enabled = true; + this._needUpdate = true; } + private _needUpdate: boolean = false; update() { - this.updateContent(); - this.enabled = false; + if (this._needUpdate) { + this.updateContent(); + this._needUpdate = false; + } } updateContent() { @@ -114,7 +122,6 @@ export class LanguageLabel extends Component { if (font) { richtext.font = font; } - this.initFontSize = richtext.fontSize; richtext.string = this.string; this.initFontSize = richtext.fontSize; } diff --git a/assets/libs/gui/language/LanguagePack.ts b/assets/libs/gui/language/LanguagePack.ts index bb7231d..ae856ab 100644 --- a/assets/libs/gui/language/LanguagePack.ts +++ b/assets/libs/gui/language/LanguagePack.ts @@ -8,10 +8,7 @@ import { director, error, JsonAsset, TTFFont } from "cc"; import { resLoader } from "../../../core/common/loader/ResLoader"; import { Logger } from "../../../core/common/log/Logger"; import { JsonUtil } from "../../../core/utils/JsonUtil"; -import { LanguageData } from "./LanguageData"; -import { LanguageLabel } from "./LanguageLabel"; -import { LanguageSpine } from "./LanguageSpine"; -import { LanguageSprite } from "./LanguageSprite"; +import { LanguageData, LanguageType } from "./LanguageData"; export class LanguagePack { /** @@ -21,23 +18,12 @@ export class LanguagePack { updateLanguage(lang: string) { let rootNodes = director.getScene()!.children; for (let i = 0; i < rootNodes.length; ++i) { - // 更新所有的LanguageLabel节点 - let labels = rootNodes[i].getComponentsInChildren(LanguageLabel); - for (let j = 0; j < labels.length; j++) { - labels[j].language(); - } - - // 更新所有的LanguageSprite节点 - let sprites = rootNodes[i].getComponentsInChildren(LanguageSprite); - for (let j = 0; j < sprites.length; j++) { - sprites[j].language(); - } - - // 更新所有的LanguageSpine节点 - let spines = rootNodes[i].getComponentsInChildren(LanguageSpine); - for (let j = 0; j < spines.length; j++) { - spines[j].language(); - } + LanguageType.forEach(type => { + let comps: any[] = rootNodes[i].getComponentsInChildren(type); + for (let j = 0; j < comps.length; j++) { + comps[j].language(); + } + }) } } diff --git a/assets/libs/model-view/VMLabel.ts b/assets/libs/model-view/VMLabel.ts index 736a6c0..b5c89f8 100644 --- a/assets/libs/model-view/VMLabel.ts +++ b/assets/libs/model-view/VMLabel.ts @@ -38,7 +38,7 @@ export default class VMLabel extends VMBase { @property({ readonly: true }) - private labelType: string = LABEL_TYPE.CC_LABEL; + protected labelType: string = LABEL_TYPE.CC_LABEL; @property({ type: [CCString], @@ -57,7 +57,7 @@ export default class VMLabel extends VMBase { private templateFormatArr: string[] = []; /** 源字符串 */ - private originText: string | null = null; + protected originText: string | null = null; onRestore() { this.checkLabel();