| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { AppKernel } from "@scripts/app/AppKernel";
- import { AssetSlot } from "@scripts/components/AssetSlot";
- import { BUNDLE_ID } from "@scripts/define/ResDefine";
- import { isValid, Sprite, SpriteFrame, UITransform } from "cc";
- import { ImgFitMode, setSpriteFitMode } from "./UIHelper";
- const GoodsIconRes = "common/goodsIcon/img_icon";
- interface ISetSpriteOptions {
- bundle?: string;
- fitMode?: ImgFitMode;
- onCheck?: () => boolean;
- }
- /**
- * 动态加载spriteFrame path和bundle都是空 则为sprite.spriteFrame = null;
- * @param sprite
- * @param path
- * @param bundle
- * @returns
- */
- export async function setSpriteFrame(sprite: Sprite, path?: string, optins?: ISetSpriteOptions) {
- const node = sprite.node;
- const bundle = optins?.bundle;
- const fitMode = optins?.fitMode;
- const onCheck = optins?.onCheck;
- const slot = node.getComponent(AssetSlot) || node.addComponent(AssetSlot);
- if (!path) {
- slot.changeAsset(null);
- sprite.spriteFrame = null;
- return;
- }
- let res: SpriteFrame = null;
- const resources = AppKernel.resources;
- if (path.startsWith("http")) {
- res = await resources.loadRemoteSp(path);
- } else {
- if (!path.endsWith("/spriteFrame")) path += "/spriteFrame";
- res = await resources.load(bundle || BUNDLE_ID.Lobby, path, SpriteFrame);
- }
- if (!res) return;
- if (!isValid(sprite)) {
- resources.releaseRes(res);
- return;
- }
- if (onCheck && !onCheck()) return;
- res.addRef();
- sprite.spriteFrame = res;
- setSpriteFitMode(sprite, fitMode);
- slot.changeAsset(res);
- return res;
- }
- export async function setOriginalSp(sprite: Sprite, path?: string) {
- if (!path) {
- return;
- }
- let res: SpriteFrame = null;
- const resources = AppKernel.resources;
- if (path.startsWith("http")) {
- res = await resources.loadRemoteSp(path);
- } else {
- if (!path.endsWith("/spriteFrame")) path += "/spriteFrame";
- res = await resources.load(BUNDLE_ID.Lobby, path, SpriteFrame);
- }
- // cb && cb(res);
- sprite.spriteFrame = res;
- sprite.getComponent(UITransform).width = res.originalSize.width;
- sprite.getComponent(UITransform).height = res.originalSize.height;
- }
- export async function setGoodsIcon(sprite: Sprite, type: number, isGCOnly = false) {
- const iconPath = isGCOnly ? `${GoodsIconRes}gc` : `${GoodsIconRes}${type}`;
- return setSpriteFrame(sprite, `${iconPath}`);
- }
|