123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- import { gameMethod } from "../../common/gameMethod";
- import { KindItem } from "../../common/Xys";
- import { ConstItem, ItemKind, UserSex } from "../../data/const/TypeConst";
- import GameDataCenter from "../../data/GameDataCenter";
- import AssetsBundleMgr from "../../utils/AssetsBundleMgr";
- import { I18n } from "../../utils/I18nUtil";
- import ResGComponent from "../compment/ResGComponent";
- import ResSprite from "../compment/ResSprite";
- /**
- * 动态加载资源
- */
- export default class FguiLoadMgr {
- //动态加载道具图标
- static loadItemIcon(obj: fgui.GLoader | fgui.GButton | fgui.GLabel, kindItem: KindItem | ConstItem, callback: Function = (success: boolean) => { }, scale?: number) {
- if (!kindItem) {
- let node = obj.node;
- let itemResSprite = node.getComponent(ResSprite);
- itemResSprite?.unsetSpriteFrame();
- callback && callback(false);
- return;
- }
- let iconUrl = GameDataCenter.item.getItemCfgBase(kindItem)?.iconUrl;
- if (gameMethod.isEmpty(iconUrl)) {
- if (CC_PREVIEW) console.error("道具Url未配置===>>>", kindItem);
- return;
- }
- let kind = kindItem?.[0];
- if (kind == ItemKind.money) {
- let node = obj.node;
- let itemBase = GameDataCenter.item.getItemCfgBase(kindItem);
- let itemResSprite = node.getComponent(ResSprite) ?? node.addComponent(ResSprite);
- itemResSprite.setSpriteFrame("ItemIcon", itemBase.icon, () => {
- if (callback) {
- callback(true);
- }
- });
- let nodeScaleX = scale ?? obj.scaleX;
- let nodeScaleY = scale ?? obj.scaleY;
- node.setScale(nodeScaleX, nodeScaleY);
- return;
- }
- // 因有些图标不在common包里 所以需要加载
- let newUrls = iconUrl.split("/");
- this.loadPackage(newUrls[2], newUrls[2], (error) => {
- if (error) {
- if (callback) callback(false);
- return;
- }
- let url = iconUrl;
- if (obj instanceof fgui.GLoader) {
- obj.url = url;
- } else {
- obj.icon = url;
- }
- if (scale) obj.asCom.setScale(scale, scale);
- if (callback) {
- callback(true);
- }
- });
- }
- //动态加载package包里的图片资源
- static loadSpriteFormPackage(obj: fgui.GLoader | fairygui.GLabel | fairygui.GButton, bundleName: string, pkgName: string, url: string, callback: Function = (success: boolean) => { }, scale?: number, xFlip: boolean = false, yFlip: boolean = false) {
- this.loadPackage(bundleName, pkgName, (error) => {
- if (error || !obj?.node || !obj.node.isValid) {
- if (callback) callback(false);
- return;
- }
- if (obj instanceof fgui.GLoader) {
- obj.url = url;
- } else {
- obj.icon = url;
- }
- if (scale) {
- obj.setScale(scale, scale);
- }
- if (xFlip || yFlip) {
- obj.setScale(obj.scaleX * (xFlip ? -1 : 1), obj.scaleY * (yFlip ? -1 : 1));
- }
- if (callback) {
- callback(true);
- }
- });
- }
- private static loadFguiPkg(bundle, pkgName, callback?: Function) {
- let p = fgui.UIPackage.getByName(pkgName);
- if (p) {
- if (callback) callback(null, p);
- } else {
- fgui.UIPackage.loadPackage(bundle, pkgName, (error, pkg) => {
- if (error) {
- if (callback) callback(error, null);
- return;
- }
- if (callback) {
- callback(null, pkg);
- }
- });
- }
- }
- /** 同步加载package */
- static async loadPackageAsync(bundleName: string, pkgName: string): Promise<void> {
- return new Promise<void>((resolve, reject) => {
- AssetsBundleMgr.loadBundle(bundleName, (error, bundle: cc.AssetManager.Bundle) => {
- if (error) {
- reject(error);
- return;
- }
- FguiLoadMgr.loadFguiPkg(bundle, pkgName, (error, pkg) => {
- if (error) {
- reject(error);
- return;
- }
- resolve();
- });
- });
- });
- }
- static loadPackage(bundleName: string, pkgName: string, onComplete: (error: any, pkg: fgui.UIPackage) => void): void {
- AssetsBundleMgr.loadBundle(bundleName, (error, bundle: cc.AssetManager.Bundle) => {
- if (error) {
- onComplete(error, null);
- return;
- }
- FguiLoadMgr.loadFguiPkg(bundle, pkgName, (error, pkg) => {
- onComplete(error, pkg);
- });
- });
- }
- /** 加载fgui里的图片 */
- static loadPackageFrameAsset(node: cc.Node, packageName: string, iconUrl: string) {
- this.loadPackage(packageName, packageName, (error, pkg) => {
- if (error) {
- return;
- }
- let asset = pkg.getItemAssetByName(iconUrl);
- if (asset) {
- let frame = asset as cc.SpriteFrame;
- node.getComponent(cc.Sprite).spriteFrame = frame;
- }
- });
- }
- /** 设置多语言文本 */
- static setI18nTextLabel(gLabel: fgui.GTextField | fgui.GRichTextField | fgui.GLabel | fgui.GButton, key: string, ...args: any[]) {
- let str = I18n.getI18nText(key, ...args);
- this.setLabel(gLabel, str);
- }
- static setLabel(gLabel: fgui.GTextField | fgui.GRichTextField | fgui.GLabel | fgui.GButton, str: string) {
- // gLabel.node.getComponent(cc.Label).cacheMode = cc.Label.CacheMode.CHAR;
- if (gLabel instanceof fgui.GTextField || gLabel instanceof fgui.GRichTextField) {
- gLabel.text = str;
- } else if (gLabel instanceof fgui.GLabel || gLabel instanceof fgui.GButton) {
- gLabel.title = str;
- }
- }
- /** 动态加载组件 */
- static LoadComp(parent: fairygui.GComponent, bundleName: string, pkgName: string, resName: string, userClass: new () => fgui.GObject, onComplete: (comp: fairygui.GObject) => void) {
- let resGComp = parent.node.getComponent(ResGComponent);
- if (!resGComp) resGComp = parent.node.addComponent(ResGComponent);
- resGComp.LoadComp(bundleName, pkgName, resName, userClass, (comp: fairygui.GObject) => {
- onComplete(comp);
- });
- }
- }
|