提问人:Prze Sadza 提问时间:11/2/2023 更新时间:11/2/2023 访问量:18
THREE.JS Object3D.removeFromParent 在 forEach 循环中删除 scene.children 的子项时不是函数错误
THREE.JS Object3D.removeFromParent is not a function error when removing childs of scene.children in forEach loop
问:
我正在尝试删除forEach循环中的临时THREE.JS 3D对象。我的代码正在完成这项工作,但是在我这样做时,控制台中出现“Object3D.removeFromParent不是函数”错误。
我正在开发以不同模式同时显示两个视图的应用程序,因此 this.scenes = [scene1, scene2] 并且我正在使用 Potree 生成点云,这就是为什么我的场景内部有自己的场景。
这就是代码:
clearTemp() {
this.scenes.forEach((scene) => {
scene.scene.children.forEach((child) => {
if (child.name.includes("temp")) {
this.#removeObject3D(child)
}
})
})
}
#removeObject3D(obj) {
if (!(obj instanceof THREE.Object3D)) return false;
if (obj.geometry) obj.geometry.dispose();
if (obj.material) {
if (obj.material instanceof Array) {
obj.material.forEach(material => material.dispose());
} else {
obj.material.dispose();
}
}
obj.removeFromParent();
return true;
}
我尝试像这样使用 Object3D.remove() 函数:
clearTemp() {
this.scenes.forEach((scene) => {
scene.scene.children.forEach((child) => {
if (child.name.includes("temp")) {
scene.scene.remove(child)
}
})
})
}
以这种方式执行此操作时,不会出现错误,但不会按预期删除临时对象。
如何正确地做到这一点,删除所有临时对象并摆脱该错误消息?
答: 暂无答案
评论