AutoReleaseImg.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. var t = require;
  2. var e = module;
  3. var i = exports;
  4. e =
  5. (this && this.__decorate) ||
  6. function(t, e, i, s) {
  7. var o,
  8. a = arguments.length,
  9. n = a < 3 ? e : null === s ? (s = Object.getOwnPropertyDescriptor(e, i)) : s;
  10. if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) n = Reflect.decorate(t, e, i, s);
  11. else
  12. for (var r = t.length - 1; 0 <= r; r--)
  13. (o = t[r]) && (n = (a < 3 ? o(n) : 3 < a ? o(e, i, n) : o(e, i)) || n);
  14. return 3 < a && n && Object.defineProperty(e, i, n), n;
  15. };
  16. Object.defineProperty(i, "__esModule", { value: !0 });
  17. const s = t("App"),
  18. o = "AutoReleaseImg",
  19. { ccclass: a, property: n, menu: r } = cc._decorator;
  20. t = class extends cc.Sprite {
  21. constructor() {
  22. super(...arguments),
  23. (this._source = ""),
  24. (this.imgState = 0),
  25. (this._spriteFrame = null),
  26. (this.isNeedDestory = !1),
  27. (this.isReleaseUnable = !1);
  28. }
  29. set source(i) {
  30. i
  31. ?
  32. ((this.spriteFrame = i),
  33. Editor.assetdb.queryMetaInfoByUuid(i._uuid, (t, e) => {
  34. if (t) cc.error(t);
  35. else {
  36. let t = e.assetUrl;
  37. t.startsWith("db://assets/resources") ?
  38. ((this.spriteFrame = i),
  39. (t = t.replace("db://assets/resources/", "")),
  40. (this._source = t.slice(0, t.lastIndexOf("."))),
  41. Editor.log(this._source)) :
  42. cc.error("只允许放置resources文件夹里面的图片");
  43. }
  44. })) :
  45. ((this.spriteFrame = null), (this._source = ""));
  46. }
  47. get source() {
  48. return this._spriteFrame;
  49. }
  50. onLoad() {
  51. this.isNeedDestory || this.parseSource();
  52. }
  53. onImgDestory() {
  54. this.spriteFrame &&
  55. (s.default.ResRecycle.decRefByUrl(this._source, o), (this.spriteFrame = null), (this.imgState = 0));
  56. }
  57. onEnable() {
  58. super.onEnable(), this.isReleaseUnable && this.parseSource();
  59. }
  60. onDisable() {
  61. super.onDisable(), this.isReleaseUnable && this.onImgDestory();
  62. }
  63. onDestroy() {
  64. this.onImgDestory();
  65. }
  66. parseSource() {
  67. if (0 == this.imgState) {
  68. let i = this._source;
  69. (this.imgState = 1),
  70. cc.resources.load(i, cc.SpriteFrame, (t, e) => {
  71. if (t)(this.imgState = 0), Log.error(`\u56fe\u7247\u4e0d\u5b58\u5728:${i}`, t);
  72. else if ((s.default.ResRecycle.addUrl(i, o), this.isValid)) {
  73. if (this.isReleaseUnable && !this.node.activeInHierarchy)
  74. return (this.imgState = 0), void s.default.ResRecycle.decRefByUrl(i, o);
  75. (this.imgState = 2), (this.spriteFrame = e);
  76. } else s.default.ResRecycle.decRefByUrl(i, o);
  77. });
  78. }
  79. }
  80. };
  81. e([n()], t.prototype, "_source", void 0),
  82. e([n({ type: cc.SpriteFrame, editorOnly: !0, override: !0 })], t.prototype, "_spriteFrame", void 0),
  83. e([n({ type: cc.SpriteFrame, override: !0 })], t.prototype, "source", null),
  84. e([n({})], t.prototype, "isReleaseUnable", void 0),
  85. (t = e([a], t)),
  86. (i.default = t);