| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4", "__unresolved_5"], function (_export, _context) {
- "use strict";
- var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, Animation, NodePool, ParticleSystem, Prefab, sp, message, resLoader, ViewUtil, EffectEvent, EffectFinishedRelease, EffectSingleCase, _crd;
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
- function _reportPossibleCrUseOfmessage(extras) {
- _reporterNs.report("message", "../../core/common/event/MessageManager", _context.meta, extras);
- }
- function _reportPossibleCrUseOfresLoader(extras) {
- _reporterNs.report("resLoader", "../../core/common/loader/ResLoader", _context.meta, extras);
- }
- function _reportPossibleCrUseOfViewUtil(extras) {
- _reporterNs.report("ViewUtil", "../../core/utils/ViewUtil", _context.meta, extras);
- }
- function _reportPossibleCrUseOfEffectEvent(extras) {
- _reporterNs.report("EffectEvent", "./EffectEvent", _context.meta, extras);
- }
- function _reportPossibleCrUseOfEffectFinishedRelease(extras) {
- _reporterNs.report("EffectFinishedRelease", "./EffectFinishedRelease", _context.meta, extras);
- }
- _export("EffectSingleCase", void 0);
- return {
- setters: [function (_unresolved_) {
- _reporterNs = _unresolved_;
- }, function (_cc) {
- _cclegacy = _cc.cclegacy;
- __checkObsolete__ = _cc.__checkObsolete__;
- __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
- Animation = _cc.Animation;
- NodePool = _cc.NodePool;
- ParticleSystem = _cc.ParticleSystem;
- Prefab = _cc.Prefab;
- sp = _cc.sp;
- }, function (_unresolved_2) {
- message = _unresolved_2.message;
- }, function (_unresolved_3) {
- resLoader = _unresolved_3.resLoader;
- }, function (_unresolved_4) {
- ViewUtil = _unresolved_4.ViewUtil;
- }, function (_unresolved_5) {
- EffectEvent = _unresolved_5.EffectEvent;
- }, function (_unresolved_6) {
- EffectFinishedRelease = _unresolved_6.EffectFinishedRelease;
- }],
- execute: function () {
- _crd = true;
- _cclegacy._RF.push({}, "bf338Z+oYxIUbd4bPREw9Ud", "EffectSingleCase", undefined);
- /*
- * @Author: dgflash
- * @Date: 2021-10-12 14:00:43
- * @LastEditors: dgflash
- * @LastEditTime: 2023-03-06 14:40:34
- */
- __checkObsolete__(['Animation', 'Node', 'NodePool', 'ParticleSystem', 'Prefab', 'sp', 'Vec3']);
- /** 特效参数 */
- /**
- * 动画特效对象池管理器,加载动画后自动播放,播放完后自动回收到池中
- * 1、支持Spine动画
- * 2、支持Cocos Animation动画
- * 3、支持Cocos ParticleSystem粒子动画
- */
- _export("EffectSingleCase", EffectSingleCase = class EffectSingleCase {
- static get instance() {
- if (this._instance == null) {
- this._instance = new EffectSingleCase();
- }
- return this._instance;
- }
- /** 全局动画播放速度 */
- get speed() {
- return this._speed;
- }
- set speed(value) {
- this._speed = value;
- this.effects_use.forEach((value, key) => {
- this.setSpeed(key);
- });
- }
- /** 对象池集合 */
- constructor() {
- this._speed = 1;
- this.effects = new Map();
- /** 正在使用中的显示对象集合 */
- this.effects_use = new Map();
- /** 对象池中用到的资源 - 这里只管理本对象加载的资源,预加载资源由其它对象自己施放 */
- this.res = new Map();
- (_crd && message === void 0 ? (_reportPossibleCrUseOfmessage({
- error: Error()
- }), message) : message).on((_crd && EffectEvent === void 0 ? (_reportPossibleCrUseOfEffectEvent({
- error: Error()
- }), EffectEvent) : EffectEvent).Put, this.onPut, this);
- }
- onPut(event, node) {
- this.put(node);
- }
- /**
- * 获取指定资源池中对象数量
- * @param path 预制资源路径
- */
- getCount(path) {
- var np = this.effects.get(path);
- if (np) {
- return np.size();
- }
- return 0;
- }
- /** 池中预加载显示对象 */
- preload(count, path, bundleName) {
- var _this = this;
- if (bundleName === void 0) {
- bundleName = (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
- error: Error()
- }), resLoader) : resLoader).defaultBundleName;
- }
- return new Promise( /*#__PURE__*/_asyncToGenerator(function* (resolve, reject) {
- var np = _this.effects.get(path);
- if (np == null) {
- np = new NodePool();
- _this.effects.set(path, np);
- }
- _this.res.set(path, bundleName);
- yield (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
- error: Error()
- }), resLoader) : resLoader).loadAsync(bundleName, path, Prefab);
- for (var i = 0; i < count; i++) {
- var node = (_crd && ViewUtil === void 0 ? (_reportPossibleCrUseOfViewUtil({
- error: Error()
- }), ViewUtil) : ViewUtil).createPrefabNode(path); //@ts-ignore
- node.res_path = path;
- np.put(node);
- }
- resolve();
- }));
- }
- /**
- * 加载资源并生成节点对象
- * @param path 预制资源路径
- * @param parent 父节点
- * @param params 显示参数
- */
- loadAndShow(path, parent, params) {
- var _this2 = this;
- return new Promise( /*#__PURE__*/_asyncToGenerator(function* (resolve, reject) {
- var np = _this2.effects.get(path);
- if (np == undefined) {
- if (params && params.bundleName) {
- _this2.res.set(path, params.bundleName);
- yield (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
- error: Error()
- }), resLoader) : resLoader).loadAsync(params.bundleName, path, Prefab);
- } else {
- _this2.res.set(path, (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
- error: Error()
- }), resLoader) : resLoader).defaultBundleName);
- yield (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
- error: Error()
- }), resLoader) : resLoader).loadAsync(path, Prefab);
- }
- var node = _this2.show(path, parent, params);
- resolve(node);
- } else {
- var _node = _this2.show(path, parent, params);
- resolve(_node);
- }
- }));
- }
- /**
- * 显示预制对象
- * @param path 预制资源路径
- * @param parent 父节点
- * @param params 显示参数
- */
- show(path, parent, params) {
- var np = this.effects.get(path);
- if (np == null) {
- np = new NodePool();
- this.effects.set(path, np);
- }
- var node; // 创建池中新显示对象
- if (np.size() == 0) {
- node = (_crd && ViewUtil === void 0 ? (_reportPossibleCrUseOfViewUtil({
- error: Error()
- }), ViewUtil) : ViewUtil).createPrefabNode(path); //@ts-ignore
- node.res_path = path;
- if (params && params.isPlayFinishedRelease) {
- node.addComponent(_crd && EffectFinishedRelease === void 0 ? (_reportPossibleCrUseOfEffectFinishedRelease({
- error: Error()
- }), EffectFinishedRelease) : EffectFinishedRelease);
- }
- } // 池中获取没使用的显示对象
- else {
- node = np.get();
- } // 设置动画播放速度
- this.setSpeed(node); // 设置显示对象位置
- if (params) {
- if (params.pos) node.position = params.pos;
- if (params.worldPos) node.worldPosition = params.worldPos;
- } // 显示到屏幕上
- if (parent) node.parent = parent; // 记录缓冲池中放出的节点
- this.effects_use.set(node, true);
- return node;
- }
- /**
- * 回收对象
- * @param name 预制对象名称
- * @param node 节点
- */
- put(node) {
- //@ts-ignore
- var name = node.res_path;
- if (name) {
- var np = this.effects.get(name);
- if (np) {
- // 回收使用的节点
- this.effects_use.delete(node); // 回到到池中
- np.put(node);
- }
- }
- }
- /**
- * 清除对象池数据
- * @param path 参数为空时,清除所有对象池数据;指定名时,清楚指定数据
- */
- clear(path) {
- if (path) {
- var np = this.effects.get(path);
- np.clear();
- } else {
- this.effects.forEach(np => {
- np.clear();
- });
- this.effects.clear();
- }
- }
- /**
- * 释放对象池中显示对象的资源内存
- * @param path 资源路径
- */
- release(path) {
- if (path) {
- this.clear(path);
- var bundleName = this.res.get(path);
- (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
- error: Error()
- }), resLoader) : resLoader).release(path, bundleName);
- this.res.delete(path);
- } else {
- // 施放池中对象内存
- this.clear(); // 施放对象资源内存
- this.res.forEach((bundleName, path) => {
- (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
- error: Error()
- }), resLoader) : resLoader).release(path, bundleName);
- });
- this.res.clear();
- }
- }
- /** 设置动画速度 */
- setSpeed(node) {
- // SPINE动画
- var spine = node.getComponent(sp.Skeleton);
- if (spine) {
- spine.timeScale = this.speed;
- } else {
- // COCOS动画
- var anims = node.getComponentsInChildren(Animation);
- if (anims.length > 0) {
- anims.forEach(animator => {
- var _animator$defaultClip;
- var aniName = (_animator$defaultClip = animator.defaultClip) == null ? void 0 : _animator$defaultClip.name;
- if (aniName) {
- var aniState = animator.getState(aniName);
- if (aniState) {
- aniState.speed = this.speed;
- }
- }
- });
- } // 粒子动画
- else if (ParticleSystem) {
- var particles = node.getComponentsInChildren(ParticleSystem);
- particles.forEach(particle => {
- particle.simulationSpeed = this.speed;
- });
- }
- }
- }
- });
- EffectSingleCase._instance = void 0;
- _cclegacy._RF.pop();
- _crd = false;
- }
- };
- });
- //# sourceMappingURL=c3f67380bad55152780a7ddbba69d343129b52a4.js.map
|