diff --git a/assets/libs/animator-effect/EffectEvent.ts b/assets/libs/animator-effect/EffectEvent.ts new file mode 100644 index 0000000..22a8d98 --- /dev/null +++ b/assets/libs/animator-effect/EffectEvent.ts @@ -0,0 +1,5 @@ +/** 特效管理模块事件 */ +export enum EffectEvent { + /** 回收节点 */ + Put = "EffectEvent_Put" +} \ No newline at end of file diff --git a/assets/libs/animator-effect/EffectEvent.ts.meta b/assets/libs/animator-effect/EffectEvent.ts.meta new file mode 100644 index 0000000..3b744b4 --- /dev/null +++ b/assets/libs/animator-effect/EffectEvent.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "44587e42-cf24-4a68-b892-5d3607eba966", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/libs/animator-effect/EffectFinishedRelease.ts b/assets/libs/animator-effect/EffectFinishedRelease.ts index 3d6698b..8fbb26e 100644 --- a/assets/libs/animator-effect/EffectFinishedRelease.ts +++ b/assets/libs/animator-effect/EffectFinishedRelease.ts @@ -6,7 +6,9 @@ */ import { Animation, Component, ParticleSystem, _decorator } from 'cc'; -import { EffectSingleCase } from './EffectSingleCase'; +import { oops } from '../../core/Oops'; +import { EffectEvent } from './EffectEvent'; + const { ccclass, property } = _decorator; /** 动画播放完释放特效 */ @@ -44,6 +46,6 @@ export class EffectFinishedRelease extends Component { } private onRecovery() { - if (this.node.parent) EffectSingleCase.instance.put(this.node); + if (this.node.parent) oops.message.dispatchEvent(EffectEvent.Put, this.node); } } diff --git a/assets/libs/animator-effect/EffectSingleCase.ts b/assets/libs/animator-effect/EffectSingleCase.ts index 97c73fa..1b8b6a0 100644 --- a/assets/libs/animator-effect/EffectSingleCase.ts +++ b/assets/libs/animator-effect/EffectSingleCase.ts @@ -7,7 +7,9 @@ import { Component, Node, NodePool, Prefab, Vec3 } from 'cc'; import { resLoader } from '../../core/common/loader/ResLoader'; +import { oops } from '../../core/Oops'; import { ViewUtil } from '../../core/utils/ViewUtil'; +import { EffectEvent } from './EffectEvent'; import { EffectFinishedRelease } from './EffectFinishedRelease'; /** 效果数据 */ @@ -35,6 +37,16 @@ export class EffectSingleCase { private effects: Map = new Map(); + constructor() { + oops.message.on(EffectEvent.Put, this.onHandler, this); + } + + private onHandler(event: string, args: any) { + if (event == EffectEvent.Put) { + this.put(args as Node); + } + } + /** 加载资源并现实特效 */ loadAndShow(name: string, parent?: Node, params?: IEffectParams): Promise { return new Promise((resolve, reject) => {