threejs离开页面的销毁
时间: 2023-08-29 17:06:57 浏览: 151
vue离开当前页面触发的函数代码
5星 · 资源好评率100%
在 Three.js 中,离开页面时需要手动销毁 WebGLRenderer 和所有场景中的对象以释放内存。可以使用以下代码:
```javascript
// 停止渲染器并清除 DOM 元素
renderer.dispose();
renderer.forceContextLoss();
renderer.domElement = null;
// 递归删除场景中的所有对象
function disposeObject(obj) {
if (obj.children) {
for (let i = 0; i < obj.children.length; i++) {
disposeObject(obj.children[i]);
}
}
if (obj.geometry) {
obj.geometry.dispose();
}
if (obj.material) {
if (obj.material instanceof Array) {
for (let i = 0; i < obj.material.length; i++) {
obj.material[i].dispose();
}
} else {
obj.material.dispose();
}
}
}
disposeObject(scene);
// 删除所有事件侦听器
window.removeEventListener('resize', onWindowResize, false);
```
以上代码将销毁渲染器、场景中的对象、以及所有事件侦听器。注意,如果在场景中使用了贴图等资源,还需要手动释放这些资源。
阅读全文