AB.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { 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. private async _loadBundleAsset(bundleName: string, url: string) {
  22. return new Promise((resolve, reject) => {
  23. assetManager.loadBundle(
  24. bundleName,
  25. (err, bundle: AssetManager.Bundle) => {
  26. if (bundle) {
  27. bundle.load(url, (err, asset) => {
  28. if (err) {
  29. reject(err);
  30. }
  31. resolve(asset);
  32. });
  33. } else {
  34. reject(new Error(`bundle ${bundleName} not found`));
  35. }
  36. }
  37. );
  38. });
  39. }
  40. }