SpriteAtlasAnim.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/frameWork/compment/SpriteAtlasAnim.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, 'edf5956GoRKsaa/AvErwY37', 'SpriteAtlasAnim');
  13. // script/frameWork/compment/SpriteAtlasAnim.ts
  14. "use strict";
  15. var __extends = (this && this.__extends) || (function () {
  16. var extendStatics = function (d, b) {
  17. extendStatics = Object.setPrototypeOf ||
  18. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  19. function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
  20. return extendStatics(d, b);
  21. };
  22. return function (d, b) {
  23. extendStatics(d, b);
  24. function __() { this.constructor = d; }
  25. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  26. };
  27. })();
  28. var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
  29. var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  30. if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
  31. else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  32. return c > 3 && r && Object.defineProperty(target, key, r), r;
  33. };
  34. Object.defineProperty(exports, "__esModule", { value: true });
  35. exports.SpriteAtlasAnim = void 0;
  36. var ResSpriteAtlas_1 = require("./ResSpriteAtlas");
  37. var UEBase_1 = require("./UEBase");
  38. var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
  39. var SpriteAtlasAnim = /** @class */ (function (_super) {
  40. __extends(SpriteAtlasAnim, _super);
  41. function SpriteAtlasAnim() {
  42. return _super !== null && _super.apply(this, arguments) || this;
  43. }
  44. /**
  45. * @param url 动画 SpriteAtlas Url
  46. * @param animCfg 动画配置
  47. */
  48. SpriteAtlasAnim.prototype.LoadAnimAsync = function (bundleKey, url, animCfg, defaultAnim) {
  49. var _this = this;
  50. var that = this;
  51. that._animCfg = animCfg;
  52. that._anim = that.node.getComponent(cc.Animation);
  53. if (!this._anim) {
  54. this.node.addComponent(cc.Animation);
  55. }
  56. that._resSpriteAtlas = that.node.getComponent(ResSpriteAtlas_1.default);
  57. if (!that._resSpriteAtlas) {
  58. that.node.addComponent(ResSpriteAtlas_1.default);
  59. }
  60. return new Promise(function (resolve) {
  61. that._resSpriteAtlas.LoadSpriteAtlas(bundleKey, url, function (atlas) {
  62. if (atlas) {
  63. that.RemoveAllClips();
  64. var sp_1;
  65. var _loop_1 = function (clipName) {
  66. var animSpriteFrames = [];
  67. that._animCfg[clipName].frames.forEach(function (frameKey) {
  68. sp_1 = atlas.getSpriteFrame(frameKey);
  69. if (sp_1) {
  70. animSpriteFrames.push(sp_1);
  71. }
  72. else {
  73. console.error("\u56FE\u96C6(" + url + ")\u4E2D\u4E0D\u5B58\u5728\u52A8\u753B\u5E27: " + frameKey);
  74. }
  75. });
  76. that.AddClip(clipName, animSpriteFrames, that._animCfg[clipName].wrapMode, that._animCfg[clipName].sample);
  77. };
  78. for (var clipName in that._animCfg) {
  79. _loop_1(clipName);
  80. }
  81. if (defaultAnim)
  82. _this.PlayAnim(defaultAnim);
  83. resolve(true);
  84. }
  85. else {
  86. resolve(false);
  87. }
  88. });
  89. });
  90. };
  91. /**
  92. *
  93. * @param clipName
  94. * @param animSpriteFrames
  95. * @param sample 动画帧率,单位为帧/秒
  96. * @param wrapMode
  97. */
  98. SpriteAtlasAnim.prototype.AddClip = function (clipName, animSpriteFrames, wrapMode, sample) {
  99. // 创建一个动画
  100. var clip = cc.AnimationClip.createWithSpriteFrames(animSpriteFrames, sample);
  101. clip.name = clipName;
  102. clip.wrapMode = wrapMode;
  103. this._anim.addClip(clip);
  104. };
  105. SpriteAtlasAnim.prototype.RemoveAllClips = function () {
  106. if (!this._anim || !this._anim.isValid)
  107. return;
  108. var clips = this._anim.getClips();
  109. for (var i = clips.length - 1; i >= 0; --i) {
  110. this._anim.removeClip(clips[i]);
  111. }
  112. };
  113. /**
  114. * 播放动画
  115. * @param clipName
  116. */
  117. SpriteAtlasAnim.prototype.PlayAnim = function (clipName) {
  118. this._anim.play(clipName);
  119. };
  120. SpriteAtlasAnim.prototype.StopAllAnim = function () {
  121. this._anim.stop();
  122. };
  123. /**
  124. * 监听动画完成
  125. * @param complete
  126. */
  127. SpriteAtlasAnim.prototype.OnAnimComplete = function (complete) {
  128. this._anim.on(cc.Animation.EventType.FINISHED, function (type, state) {
  129. complete && complete(type);
  130. }, this);
  131. };
  132. SpriteAtlasAnim = __decorate([
  133. ccclass
  134. ], SpriteAtlasAnim);
  135. return SpriteAtlasAnim;
  136. }(UEBase_1.default));
  137. exports.SpriteAtlasAnim = SpriteAtlasAnim;
  138. cc._RF.pop();
  139. }
  140. if (nodeEnv) {
  141. __define(__module.exports, __require, __module);
  142. }
  143. else {
  144. __quick_compile_project__.registerModuleFunc(__filename, function () {
  145. __define(__module.exports, __require, __module);
  146. });
  147. }
  148. })();
  149. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZnJhbWVXb3JrL2NvbXBtZW50L1Nwcml0ZUF0bGFzQW5pbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQThDO0FBQzlDLG1DQUE4QjtBQUV4QixJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQWtCNUM7SUFBcUMsbUNBQU07SUFBM0M7O0lBMEZBLENBQUM7SUFyRkc7OztPQUdHO0lBQ08sdUNBQWEsR0FBdkIsVUFBd0IsU0FBaUIsRUFBRSxHQUFXLEVBQUUsT0FBK0IsRUFBRSxXQUFtQjtRQUE1RyxpQkFtQ0M7UUFsQ0csSUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx3QkFBYyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQWMsQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFDLE9BQU87WUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFDLEtBQXFCO2dCQUN2RSxJQUFJLEtBQUssRUFBRTtvQkFD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QixPQUFPO09BQ0ssZUFBZSxDQTBGM0I7SUFBRCxzQkFBQztDQTFGRCxBQTBGQyxDQTFGb0MsZ0JBQU0sR0EwRjFDO0FBMUZZLDBDQUFlIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc1Nwcml0ZUF0bGFzIGZyb20gXCIuL1Jlc1Nwcml0ZUF0bGFzXCI7XG5pbXBvcnQgVUVCYXNlIGZyb20gXCIuL1VFQmFzZVwiO1xuXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBbmltYXRpb25JbmZvIHtcbiAgICBidW5kbGU6IHN0cmluZyxcbiAgICBhdGxhc1VybDogc3RyaW5nLFxuICAgIGFuaW06IHtcbiAgICAgICAgcnVuOiB7IG5hbWU6IHN0cmluZywgZnJhbWVzOiBzdHJpbmdbXSwgd3JhcE1vZGU6IGNjLldyYXBNb2RlLCBzYW1wbGU6IG51bWJlciB9XG4gICAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBQYXJhbXNfU3ByaXRlQXRsYXNBbmltIHtcbiAgICBbYW5pbTogc3RyaW5nXToge1xuICAgICAgICBmcmFtZXM6IHN0cmluZ1tdLFxuICAgICAgICB3cmFwTW9kZTogY2MuV3JhcE1vZGUsXG4gICAgICAgIHNhbXBsZTogbnVtYmVyLCAvLyDliqjnlLvluKfnjofvvIzljZXkvY3kuLrluKcv56eSXG4gICAgfVxufVxuXG5AY2NjbGFzc1xuZXhwb3J0IGNsYXNzIFNwcml0ZUF0bGFzQW5pbSBleHRlbmRzIFVFQmFzZSB7XG4gICAgcHJpdmF0ZSBfYW5pbTogY2MuQW5pbWF0aW9uO1xuICAgIHByaXZhdGUgX3Jlc1Nwcml0ZUF0bGFzOiBSZXNTcHJpdGVBdGxhcztcbiAgICBwcml2YXRlIF9hbmltQ2ZnOiBQYXJhbXNfU3ByaXRlQXRsYXNBbmltO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHVybCDliqjnlLsgU3ByaXRlQXRsYXMgVXJsXG4gICAgICogQHBhcmFtIGFuaW1DZmcg5Yqo55S76YWN572uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIExvYWRBbmltQXN5bmMoYnVuZGxlS2V5OiBzdHJpbmcsIHVybDogc3RyaW5nLCBhbmltQ2ZnOiBQYXJhbXNfU3ByaXRlQXRsYXNBbmltLCBkZWZhdWx0QW5pbTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICB0aGF0Ll9hbmltQ2ZnID0gYW5pbUNmZztcbiAgICAgICAgdGhhdC5fYW5pbSA9IHRoYXQubm9kZS5nZXRDb21wb25lbnQoY2MuQW5pbWF0aW9uKTtcbiAgICAgICAgaWYgKCF0aGlzLl9hbmltKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGUuYWRkQ29tcG9uZW50KGNjLkFuaW1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhhdC5fcmVzU3ByaXRlQXRsYXMgPSB0aGF0Lm5vZGUuZ2V0Q29tcG9uZW50KFJlc1Nwcml0ZUF0bGFzKTtcbiAgICAgICAgaWYgKCF0aGF0Ll9yZXNTcHJpdGVBdGxhcykge1xuICAgICAgICAgICAgdGhhdC5ub2RlLmFkZENvbXBvbmVudChSZXNTcHJpdGVBdGxhcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGF0Ll9yZXNTcHJpdGVBdGxhcy5Mb2FkU3ByaXRlQXRsYXMoYnVuZGxlS2V5LCB1cmwsIChhdGxhczogY2MuU3ByaXRlQXRsYXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXRsYXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5SZW1vdmVBbGxDbGlwcygpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3A6IGNjLlNwcml0ZUZyYW1lO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjbGlwTmFtZSBpbiB0aGF0Ll9hbmltQ2ZnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYW5pbVNwcml0ZUZyYW1lczogY2MuU3ByaXRlRnJhbWVbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fYW5pbUNmZ1tjbGlwTmFtZV0uZnJhbWVzLmZvckVhY2goZnJhbWVLZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwID0gYXRsYXMuZ2V0U3ByaXRlRnJhbWUoZnJhbWVLZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltU3ByaXRlRnJhbWVzLnB1c2goc3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYOWbvumbhigke3VybH0p5Lit5LiN5a2Y5Zyo5Yqo55S75binOiAke2ZyYW1lS2V5fWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5BZGRDbGlwKGNsaXBOYW1lLCBhbmltU3ByaXRlRnJhbWVzLCB0aGF0Ll9hbmltQ2ZnW2NsaXBOYW1lXS53cmFwTW9kZSwgdGhhdC5fYW5pbUNmZ1tjbGlwTmFtZV0uc2FtcGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdEFuaW0pIHRoaXMuUGxheUFuaW0oZGVmYXVsdEFuaW0pO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjbGlwTmFtZSBcbiAgICAgKiBAcGFyYW0gYW5pbVNwcml0ZUZyYW1lcyBcbiAgICAgKiBAcGFyYW0gc2FtcGxlIOWKqOeUu+W4p+eOh++8jOWNleS9jeS4uuW4py/np5JcbiAgICAgKiBAcGFyYW0gd3JhcE1vZGUgXG4gICAgICovXG4gICAgcHJpdmF0ZSBBZGRDbGlwKGNsaXBOYW1lOiBzdHJpbmcsIGFuaW1TcHJpdGVGcmFtZXM6IGNjLlNwcml0ZUZyYW1lW10sIHdyYXBNb2RlOiBjYy5XcmFwTW9kZSwgc2FtcGxlOiBudW1iZXIpIHtcbiAgICAgICAgLy8g5Yib5bu65LiA5Liq5Yqo55S7XG4gICAgICAgIGxldCBjbGlwID0gY2MuQW5pbWF0aW9uQ2xpcC5jcmVhdGVXaXRoU3ByaXRlRnJhbWVzKGFuaW1TcHJpdGVGcmFtZXMsIHNhbXBsZSk7XG4gICAgICAgIGNsaXAubmFtZSA9IGNsaXBOYW1lO1xuICAgICAgICBjbGlwLndyYXBNb2RlID0gd3JhcE1vZGU7XG4gICAgICAgIHRoaXMuX2FuaW0uYWRkQ2xpcChjbGlwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIFJlbW92ZUFsbENsaXBzKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2FuaW0gfHwgIXRoaXMuX2FuaW0uaXNWYWxpZCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBjbGlwcyA9IHRoaXMuX2FuaW0uZ2V0Q2xpcHMoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGNsaXBzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICB0aGlzLl9hbmltLnJlbW92ZUNsaXAoY2xpcHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5pKt5pS+5Yqo55S7XG4gICAgICogQHBhcmFtIGNsaXBOYW1lIFxuICAgICAqL1xuICAgIFBsYXlBbmltKGNsaXBOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYW5pbS5wbGF5KGNsaXBOYW1lKTtcbiAgICB9XG5cbiAgICBTdG9wQWxsQW5pbSgpIHtcbiAgICAgICAgdGhpcy5fYW5pbS5zdG9wKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog55uR5ZCs5Yqo55S75a6M5oiQXG4gICAgICogQHBhcmFtIGNvbXBsZXRlIFxuICAgICAqL1xuICAgIE9uQW5pbUNvbXBsZXRlKGNvbXBsZXRlOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLl9hbmltLm9uKGNjLkFuaW1hdGlvbi5FdmVudFR5cGUuRklOSVNIRUQsICh0eXBlOiBzdHJpbmcsIHN0YXRlOiBjYy5BbmltYXRpb25TdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29tcGxldGUgJiYgY29tcGxldGUodHlwZSk7XG4gICAgICAgIH0sIHRoaXMpO1xuICAgIH1cbn1cbiJdfQ==