threejs释放内存

  1. removeScene = () = >{  
  2.   this.clearScene();  
  3. };  
  4.   
  5. clearCache = item = >{  
  6.   item.geometry.dispose();  
  7.   item.material.dispose();  
  8. };  
  9.   
  10. clearScene = () = >{  
  11.   this.removeObj(this.scene);  
  12. };  
  13.   
  14. removeObj = obj = >{  
  15.   let arr = obj.children.filter(x = >x);  
  16.   arr.forEach(item = >{  
  17.     if (item.children.length) {  
  18.       this.removeObj(item);  
  19.     } else {  
  20.       this.clearCache(item);  
  21.       item.clear();  
  22.     }  
  23.   });  
  24.   obj.clear();  
  25.   arr = null;  
  26. };  
  27.   
  28. destroyed = () = >{  
  29.   window.removeEventListener(“resize”this.onWindowResize);  
  30.   this.clearScene();  
  31.   this.renderer.renderLists.dispose();  
  32.   this.renderer.dispose();  
  33.   this.renderer.forceContextLoss();  
  34.   this.renderer.domElement = null;  
  35.   this.renderer.content = null;  
  36.   this.renderer = null;  
  37.   cancelAnimationFrame(animationId);  
  38.   THREE.Cache.clear();  
  39. };  

本文链接地址: threejs释放内存