From 2ade0a881a00bf7ebc6cd6067f52d3a268508111 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 28 三月 2024 14:12:49 +0800
Subject: [PATCH] #

---
 zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js |   31 +++++++++++++++++++++++++++++--
 1 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js b/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js
index c7a6fd8..fc082f0 100644
--- a/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js
+++ b/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js
@@ -167,8 +167,35 @@
     destroy = () => {
         cancelAnimationFrame(this.animationFrame);
         window.removeEventListener('resize', this.resizeHandler);
-        this.renderer.dispose();
-        this.controls.dispose();
+        if (this.scene) {
+            while (this.scene.children.length > 0) {
+                this.removeEntity(this.scene.children[0]);
+            }
+            this.scene = null;
+        }
+        if (this.renderer) {
+            this.renderer.dispose();
+            this.renderer.forceContextLoss();
+            this.renderer.context = null;
+            this.renderer.domElement = null;
+            this.renderer = null;
+        }
+        if (this.controls) {
+            this.controls.dispose();
+            this.controls = null;
+        }
+        this.camera = null;
+        this.objects = [];
+        while (this.dom?.firstChild) {
+            this.dom.removeChild(this.dom.firstChild);
+        }
+    }
+
+    removeEntity = (object) => {
+        if (object.material) object.material.dispose();
+        if (object.geometry) object.geometry.dispose();
+        if (object.texture) object.texture.dispose();
+        this.scene.remove(object);
     }
 };
 

--
Gitblit v1.9.1