Utils.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { ImageAsset, SpriteFrame, Texture2D, assetManager, resources } from "cc";
  2. export class Utils {
  3. /**
  4. * 加载SpriteFrame
  5. * @param url 资源地址
  6. * @param onSuccess 成功回调
  7. */
  8. public static LoadSpriteFrame(url: string, onSuccess: (spriteFrame: SpriteFrame) => void) {
  9. if (url.startsWith("data:image/")) {
  10. const img = new Image();
  11. img.src = url;
  12. const tex = new Texture2D();
  13. img.onload = () => {
  14. tex.reset({
  15. width: img.width,
  16. height: img.height,
  17. });
  18. tex.uploadData(img, 0, 0);
  19. const sp = new SpriteFrame();
  20. sp.texture = tex;
  21. onSuccess(sp);
  22. };
  23. } else if (url.startsWith("http")) {
  24. assetManager.loadRemote<ImageAsset>(url, {ext: ".jpg"}, (err, imageAsset) => {
  25. if (err) return;
  26. const spriteFrame = new SpriteFrame();
  27. const texture = new Texture2D();
  28. texture.image = imageAsset;
  29. spriteFrame.texture = texture;
  30. onSuccess(spriteFrame);
  31. });
  32. } else {
  33. resources.load(url + "/spriteFrame", SpriteFrame, (err, spriteFrame) => {
  34. if (err) return;
  35. onSuccess(spriteFrame);
  36. });
  37. }
  38. }
  39. }