mirror of
https://gitee.com/dgflash/oops-framework.git
synced 2026-05-14 14:21:29 +08:00
图片多语言组件可用dataID替换不同类的图片字体资源
This commit is contained in:
@@ -2596,7 +2596,7 @@
|
||||
"__prefab": {
|
||||
"__id__": 118
|
||||
},
|
||||
"path": "image",
|
||||
"_dataID": "image",
|
||||
"isRawSize": false,
|
||||
"_id": ""
|
||||
},
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
"_priority": 1073741824,
|
||||
"_fov": 45,
|
||||
"_fovAxis": 0,
|
||||
"_orthoHeight": 445.57919621749414,
|
||||
"_orthoHeight": 371.44208037825064,
|
||||
"_near": 1,
|
||||
"_far": 2000,
|
||||
"_color": {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: dgflash
|
||||
* @Date: 2021-07-03 16:13:17
|
||||
* @LastEditors: dgflash
|
||||
* @LastEditTime: 2022-02-12 19:05:54
|
||||
* @LastEditTime: 2022-03-10 17:37:45
|
||||
*/
|
||||
import { setDisplayStats, _decorator } from 'cc';
|
||||
import { DEBUG } from 'cc/env';
|
||||
|
||||
@@ -62,7 +62,8 @@ export class LanguageLabel extends Component {
|
||||
return _string;
|
||||
}
|
||||
|
||||
set language(lang: string) {
|
||||
/** 更新语言 */
|
||||
language() {
|
||||
this._needUpdate = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
/*
|
||||
* @Author: dgflash
|
||||
* @Date: 2021-07-03 16:13:17
|
||||
* @LastEditors: dgflash
|
||||
* @LastEditTime: 2022-03-11 17:10:39
|
||||
*/
|
||||
import { director, error, JsonAsset, warn } from "cc";
|
||||
import { resLoader } from "../../common/loader/ResLoader";
|
||||
import { Logger } from "../../common/log/Logger";
|
||||
@@ -29,7 +35,7 @@ export class LanguagePack {
|
||||
* @param lang
|
||||
*/
|
||||
public updateLanguage(lang: string) {
|
||||
let lanjson = resLoader.get(`${this._langjsonPath}/${lang}`, JsonAsset);
|
||||
let lanjson: any = resLoader.get(`${this._langjsonPath}/${lang}`, JsonAsset);
|
||||
if (lanjson && lanjson.json) {
|
||||
LanguageData.data = lanjson.json;
|
||||
let rootNodes = director.getScene()!.children;
|
||||
@@ -37,12 +43,12 @@ export class LanguagePack {
|
||||
// 更新所有的LanguageLabel节点
|
||||
let languagelabels = rootNodes[i].getComponentsInChildren(LanguageLabel);
|
||||
for (let j = 0; j < languagelabels.length; j++) {
|
||||
languagelabels[j].language = lang;
|
||||
languagelabels[j].language();
|
||||
}
|
||||
// 更新所有的LanguageSprite节点
|
||||
let languagesprites = rootNodes[i].getComponentsInChildren(LanguageSprite);
|
||||
for (let j = 0; j < languagesprites.length; j++) {
|
||||
languagesprites[j].language = lang;
|
||||
languagesprites[j].language();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
import { Component, Size, Sprite, SpriteFrame, UITransform, _decorator } from "cc";
|
||||
/*
|
||||
* @Author: dgflash
|
||||
* @Date: 2021-11-24 15:51:01
|
||||
* @LastEditors: dgflash
|
||||
* @LastEditTime: 2022-03-11 17:13:46
|
||||
*/
|
||||
import { CCString, Component, Size, Sprite, SpriteFrame, UITransform, _decorator } from "cc";
|
||||
import { EDITOR } from "cc/env";
|
||||
import { resLoader } from "../../common/loader/ResLoader";
|
||||
import { Logger } from "../../common/log/Logger";
|
||||
import { LanguageData } from "./LanguageData";
|
||||
@@ -8,10 +15,18 @@ const { ccclass, property, menu } = _decorator;
|
||||
@ccclass("LanguageSprite")
|
||||
@menu('ui/language/LanguageSprite')
|
||||
export class LanguageSprite extends Component {
|
||||
@property({
|
||||
tooltip: "资源路径(language/texture/内的相对路径)"
|
||||
})
|
||||
public path: string = "";
|
||||
@property({ serializable: true })
|
||||
private _dataID: string = "";
|
||||
@property({ type: CCString, serializable: true })
|
||||
get dataID(): string {
|
||||
return this._dataID || "";
|
||||
}
|
||||
set dataID(value: string) {
|
||||
this._dataID = value;
|
||||
if (!EDITOR) {
|
||||
this.updateSprite();
|
||||
}
|
||||
}
|
||||
|
||||
@property({
|
||||
tooltip: "是否设置为图片原始资源大小"
|
||||
@@ -19,28 +34,31 @@ export class LanguageSprite extends Component {
|
||||
private isRawSize: boolean = true;
|
||||
|
||||
start() {
|
||||
this.language = LanguageData.current;
|
||||
this.updateSprite();
|
||||
}
|
||||
|
||||
set language(lang: string) {
|
||||
this.updateSprite(lang);
|
||||
/** 更新语言 */
|
||||
language() {
|
||||
this.updateSprite();
|
||||
}
|
||||
|
||||
updateSprite(lang: string) {
|
||||
let spcomp: Sprite = this.getComponent(Sprite)!;
|
||||
private updateSprite() {
|
||||
// 获取语言标记
|
||||
let path = `language/texture/${lang}/${this.path}/spriteFrame`;
|
||||
let res = resLoader.get(path, SpriteFrame);
|
||||
let path = `language/texture/${LanguageData.current}/${this.dataID}/spriteFrame`;
|
||||
let res: SpriteFrame | null = resLoader.get(path, SpriteFrame);
|
||||
if (!res) {
|
||||
Logger.erroring("[LanguageSprite] 资源不存在 " + path);
|
||||
}
|
||||
spcomp.spriteFrame = res;
|
||||
else {
|
||||
let spcomp: Sprite = this.getComponent(Sprite)!;
|
||||
spcomp.spriteFrame = res;
|
||||
|
||||
/** 修改节点为原始图片资源大小 */
|
||||
if (this.isRawSize) {
|
||||
//@ts-ignore
|
||||
let rawSize = res._originalSize as Size;
|
||||
spcomp.getComponent(UITransform)?.setContentSize(rawSize);
|
||||
/** 修改节点为原始图片资源大小 */
|
||||
if (this.isRawSize) {
|
||||
//@ts-ignore
|
||||
let rawSize = res._originalSize as Size;
|
||||
spcomp.getComponent(UITransform)?.setContentSize(rawSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user