AB.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { Prefab, Sprite } from "cc";
  2. import { SpriteFrame, assetManager, AssetManager } from "cc";
  3. import asset from "../../../extensions/ttttttttttttttt/@types/packages/engine/@types/editor-extends/manager/asset";
  4. import { ModuleDef } from "../../scripts/ModuleDef";
  5. export class AB {
  6. private static _inst: AB;
  7. public static get inst(): AB {
  8. if (!this._inst) {
  9. this._inst = new AB();
  10. }
  11. return this._inst;
  12. }
  13. public async setBundleBallImage(url: string, icon: Sprite) {
  14. let spriteFrame = await this.loadBundleSpriteFrame(ModuleDef.BALL, url);
  15. icon.spriteFrame = spriteFrame;
  16. }
  17. public async loadBundleSpriteFrame(bundleName: string, url: string) {
  18. let asset = await this._loadBundleAsset(bundleName, url + "/spriteFrame");
  19. return asset as SpriteFrame;
  20. }
  21. public async loadPrefab(bundleName: string, url: string): Promise<Prefab> {
  22. let asset = await this._loadBundleAsset(bundleName, url);
  23. return asset as Prefab;
  24. }
  25. private async _loadBundleAsset(bundleName: string, url: string) {
  26. return new Promise((resolve, reject) => {
  27. assetManager.loadBundle(
  28. bundleName,
  29. (err, bundle: AssetManager.Bundle) => {
  30. if (bundle) {
  31. bundle.load(url, (err, asset) => {
  32. if (err) {
  33. reject(err);
  34. }
  35. resolve(asset);
  36. });
  37. } else {
  38. reject(new Error(`bundle ${bundleName} not found`));
  39. }
  40. }
  41. );
  42. });
  43. }
  44. }