我正在使用ThreeJS开发一个web应用程序,它显示一个实体列表,每个实体都有相应的“查看”和“隐藏”按钮;例如,entityName 视图隐藏。当用户单击查看按钮时,将调用以下函数并将实体成功绘制到屏幕上。
function loadOBJFile(objFile){
/* material of OBJ model */
var OBJMaterial = new THREE.MeshPhongMaterial({color: 0x8888ff});
var loader = new THREE.OBJLoader();
loader.load(objFile, function (object){
object.traverse (function (child){
if (child instanceof THREE.Mesh) {
child.material = OBJMaterial;
}
});
object.position.y = 0.1;
scene.add(object);
});
}
function addEntity(object) {
loadOBJFile(object.name);
}
在单击Hide按钮时,将调用以下函数:
function removeEntity(object){
scene.remove(object.name);
}
问题是,当Hide按钮被点击时,实体一旦加载就不会从屏幕中删除。要让隐藏按钮工作,我该怎么做?
我做了个小实验。我在addEntity
函数中的scene.add(object);
后面添加了scene.remove(object.name);
,因此,当单击“查看”按钮时,没有绘制任何实体(正如预期的那样),这意味着scene.remove(object.name);
在addEntity
中工作得很好。但是我仍然不知道如何在removeEntity(object)中使用它。
另外,我检查了scene.children的内容,结果显示: object Object,object object
完整代码:http://devplace.in/~harman/model_display1.php.html
如果需要更多细节,请询问。我使用ThreeJS的rev-59-dev和rev-60进行测试。
谢谢。:)
https://stackoverflow.com/questions/18357529
复制相似问题