From b610b87ef05ade1341aae5603c52a99f194b7bce Mon Sep 17 00:00:00 2001 From: liuxianghui <519646741@qq.com> Date: Tue, 7 Dec 2021 16:13:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=8B=E4=BB=B6=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E9=94=99=E4=B9=B1=E7=9A=84bug=EF=BC=8C=20=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E6=89=93=E5=8C=85=E6=97=B6=E4=BB=A3=E7=A0=81=E6=B7=B7?= =?UTF-8?q?=E6=B7=86=E5=AF=BC=E8=87=B4=E6=96=B9=E6=B3=95=E5=90=8D=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=EF=BC=8C=E5=9B=A0=E6=AD=A4=E4=B8=8D=E8=83=BD=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E8=AF=86=E5=88=AB=E7=9A=84key=EF=BC=8C=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=AF=8F=E4=B8=AA=E4=BA=8B=E4=BB=B6=E7=B1=BB=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=94=AF=E4=B8=80key=EF=BC=8C=E5=90=8E?= =?UTF-8?q?=E6=9C=9F=E5=B0=9D=E8=AF=95=E6=94=B9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../babylon/controller/event-manager/event-base.ts | 9 +++++++-- .../controller/event-manager/event-manager.ts | 12 ++++++++---- .../event-manager/events/event-change-facility.ts | 6 ++++++ .../events/event-get-markplandata-success.ts | 3 +++ .../event-manager/events/event-keyboard-input.ts | 4 ++++ .../event-manager/events/event-loading-change.ts | 4 ++++ .../event-manager/events/event-mark-info-change.ts | 6 +++++- .../event-manager/events/event-modelinfo-change.ts | 4 ++++ src/app/babylon/controller/inputController.ts | 2 -- src/app/babylon/controller/scene-manager.ts | 1 - src/app/babylon/model/info/mark/model-info-mark.ts | 1 - src/app/babylon/view/mark-window/mark-window.ts | 1 - 13 files changed, 42 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 7bee194..81cb8db 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ > 三维部分 -- [🚩 重大变更] 无 +- [🚩 重大变更] 找到发布后 EventManager 错乱的问题:代码混淆导致类名重复! 更改对事件分类的逻辑,暂时采用自定义名称的方式。 后期需要尝试改进。 - [🌱 新增] 无 - [🍀 完善] 修复多个单位切换时,未重新获取应急预案信息的问题 - [🍀 完善] 增加打印,排查部署与本地差异: 部署后新建单位创建应急预案不成功,本地未出现此情况 diff --git a/src/app/babylon/controller/event-manager/event-base.ts b/src/app/babylon/controller/event-manager/event-base.ts index 016b019..1e01b69 100644 --- a/src/app/babylon/controller/event-manager/event-base.ts +++ b/src/app/babylon/controller/event-manager/event-base.ts @@ -6,7 +6,12 @@ export class Event_Base { //属性 自定义 - - + /** + * 全局唯一key,用于类型识别 (必须不能重名) + * 因为类名会发生混淆,变得重名 + */ + getTypeKey() { + return ""; + } } \ No newline at end of file diff --git a/src/app/babylon/controller/event-manager/event-manager.ts b/src/app/babylon/controller/event-manager/event-manager.ts index 793cf30..c623545 100644 --- a/src/app/babylon/controller/event-manager/event-manager.ts +++ b/src/app/babylon/controller/event-manager/event-manager.ts @@ -43,7 +43,8 @@ export class EventManager { let result = null; for (let i = 0; i < EventManager.s_allEventContainer.length; i++) { - if (EventManager.s_allEventContainer[i].key == c.name) { + let obj = new c(); + if (EventManager.s_allEventContainer[i].key == obj.getTypeKey()) { result = (EventManager.s_allEventContainer[i]); // console.log("找到已有的event" + (c.name)); return result; @@ -73,7 +74,7 @@ export class EventManager { let instance = EventManager.getEvent(c); - + console.log("添加监听", instance.key); return instance.observable.add(callback, mask, insertFirst, scope, unregisterOnFirstCall); } @@ -117,6 +118,7 @@ export class EventManager { if (instance == null) { return; } + // console.log("派发事件", instance.key); instance.observable.notifyObservers(eventData); } @@ -130,9 +132,11 @@ class EventContainer { key: string; observable: Observable; constructor(c: { new(): T }) { + let obj = new c(); - this.key = c.name; - // console.log("EventContainer===" + this.key); + //this.key = c.name; + this.key = obj.getTypeKey(); + console.log("EventContainer===" + this.key); this.observable = new Observable(); } } \ No newline at end of file diff --git a/src/app/babylon/controller/event-manager/events/event-change-facility.ts b/src/app/babylon/controller/event-manager/events/event-change-facility.ts index aca85e7..719e061 100644 --- a/src/app/babylon/controller/event-manager/events/event-change-facility.ts +++ b/src/app/babylon/controller/event-manager/events/event-change-facility.ts @@ -8,6 +8,8 @@ import { EventManager } from "../event-manager"; export class Event_ChangeFacility extends Event_Base { + + modeleData: ModelData; modelChangeType: ModelChangeType; belongtoBuilding: BuildingInfo;//属于哪个建筑 @@ -28,4 +30,8 @@ export class Event_ChangeFacility extends Event_Base { EventManager.dispatch(Event_ChangeFacility, eventInfo); } + + getTypeKey() { + return "Event_ChangeFacility"; + } } \ No newline at end of file diff --git a/src/app/babylon/controller/event-manager/events/event-get-markplandata-success.ts b/src/app/babylon/controller/event-manager/events/event-get-markplandata-success.ts index bc8dbf5..e4acb29 100644 --- a/src/app/babylon/controller/event-manager/events/event-get-markplandata-success.ts +++ b/src/app/babylon/controller/event-manager/events/event-get-markplandata-success.ts @@ -20,5 +20,8 @@ export class Event_GetAllMarkPlanData extends Event_Base { } + getTypeKey() { + return "Event_GetAllMarkPlanData"; + } } \ No newline at end of file diff --git a/src/app/babylon/controller/event-manager/events/event-keyboard-input.ts b/src/app/babylon/controller/event-manager/events/event-keyboard-input.ts index 9239fc6..90868b0 100644 --- a/src/app/babylon/controller/event-manager/events/event-keyboard-input.ts +++ b/src/app/babylon/controller/event-manager/events/event-keyboard-input.ts @@ -14,4 +14,8 @@ export class Event_KeyboardInput extends Event_Base { EventManager.dispatch(Event_KeyboardInput, eventData); } + + getTypeKey() { + return "Event_KeyboardInput"; + } } \ No newline at end of file diff --git a/src/app/babylon/controller/event-manager/events/event-loading-change.ts b/src/app/babylon/controller/event-manager/events/event-loading-change.ts index 48a6788..51a808b 100644 --- a/src/app/babylon/controller/event-manager/events/event-loading-change.ts +++ b/src/app/babylon/controller/event-manager/events/event-loading-change.ts @@ -26,4 +26,8 @@ export class Event_LoadingChange extends Event_Base { EventManager.dispatch(Event_LoadingChange, eventData); Event_LoadingChange.isLoading = showLoading; } + + getTypeKey() { + return "Event_LoadingChange"; + } } \ No newline at end of file diff --git a/src/app/babylon/controller/event-manager/events/event-mark-info-change.ts b/src/app/babylon/controller/event-manager/events/event-mark-info-change.ts index 6562c9d..a168745 100644 --- a/src/app/babylon/controller/event-manager/events/event-mark-info-change.ts +++ b/src/app/babylon/controller/event-manager/events/event-mark-info-change.ts @@ -13,13 +13,17 @@ export class Event_MarkInfoChange extends Event_Base { markInfo: ModelInfo_mark; static dispatch(eventType: MarkInfoChangeType, markInfo: ModelInfo_mark) { - console.log("派发Event_MarkInfoChange"); + // console.log("派发Event_MarkInfoChange"); let eventInfo = new Event_MarkInfoChange(); eventInfo.eventType = eventType; eventInfo.markInfo = markInfo; EventManager.dispatch(Event_MarkInfoChange, eventInfo); } + + getTypeKey() { + return "Event_MarkInfoChange"; + } } /** diff --git a/src/app/babylon/controller/event-manager/events/event-modelinfo-change.ts b/src/app/babylon/controller/event-manager/events/event-modelinfo-change.ts index 00f9f28..8ba4fda 100644 --- a/src/app/babylon/controller/event-manager/events/event-modelinfo-change.ts +++ b/src/app/babylon/controller/event-manager/events/event-modelinfo-change.ts @@ -30,4 +30,8 @@ export class Event_ModelInfoChange extends Event_Base { eventData.setInfo(modeleInfo, modelChangeType); EventManager.dispatch(Event_ModelInfoChange, eventData); } + + getTypeKey() { + return "Event_ModelInfoChange"; + } } \ No newline at end of file diff --git a/src/app/babylon/controller/inputController.ts b/src/app/babylon/controller/inputController.ts index 69c2365..0298e4d 100644 --- a/src/app/babylon/controller/inputController.ts +++ b/src/app/babylon/controller/inputController.ts @@ -96,9 +96,7 @@ export class InputController { //添加监听事件 EventManager.addListener(Event_MarkInfoChange, (eventData, eventState) => { this.markInfo = eventData.markInfo; - console.trace("Event_MarkInfoChange==111=="); if (eventData.markInfo == null) { - console.trace("Event_MarkInfoChange==222=="); return; } this.markData = eventData.markInfo.markData; diff --git a/src/app/babylon/controller/scene-manager.ts b/src/app/babylon/controller/scene-manager.ts index 64faa4f..68ca990 100644 --- a/src/app/babylon/controller/scene-manager.ts +++ b/src/app/babylon/controller/scene-manager.ts @@ -428,7 +428,6 @@ export class SceneManager { static showDebug = false; //按键按下 static onKeyDown(this: GlobalEventHandlers, ev: KeyboardEvent) { - console.log("onKeyDown"); if (ev.altKey && ev.key == 'd' && ModeManager.isDebug) { SceneManager.showDebug = !SceneManager.showDebug; if (SceneManager.showDebug) { diff --git a/src/app/babylon/model/info/mark/model-info-mark.ts b/src/app/babylon/model/info/mark/model-info-mark.ts index 4237a65..8a79389 100644 --- a/src/app/babylon/model/info/mark/model-info-mark.ts +++ b/src/app/babylon/model/info/mark/model-info-mark.ts @@ -195,7 +195,6 @@ export class ModelInfo_mark extends ModelInfo { * @param select */ onSelect(select: boolean) { - console.log("onSelect", select); this.isSelect = select; // this.lookAt(); if (select) { diff --git a/src/app/babylon/view/mark-window/mark-window.ts b/src/app/babylon/view/mark-window/mark-window.ts index 75beff6..9533696 100644 --- a/src/app/babylon/view/mark-window/mark-window.ts +++ b/src/app/babylon/view/mark-window/mark-window.ts @@ -965,7 +965,6 @@ export class MarkWindow extends UIBase { * @param eventData */ onKeyboardInput(eventData: Event_KeyboardInput) { - console.log("onKeyboardInput", eventData); if (eventData.data != null && eventData.data.key == "Delete") // 删除。 后期看是否加入 Backspace 退格 { this.deleteMarkInfo(this.currentMarkInfo);