2014-12-03 55 views
0

我已經把一些網格放入我的場景與gridhelper。但是,當我刪除它時,它並不總是從場景中移除。Three.js刪除一個項目 - GridHelper

這裏是我通過刪除網格和軸的代碼。爲什麼這不會從場景中移除網格?有時它有效,有時不起作用。

for (var ObjID in this.Scene.__objects)                               
    { if (this.Scene.__objects[ObjID] instanceof THREE.GridHelper){ this.Scene.remove(this.Scene.__objects[ObjID]); this.Scene.__objects.splice(ObjID,1); }  
     if (this.Scene.__objects[ObjID] instanceof THREE.AxisHelper){ this.Scene.remove(this.Scene.__objects[ObjID]); this.Scene.__objects.splice(ObjID,1); }  
    }                                    
+0

通常使用一個名字以下劃線開頭的對象的屬性是一個壞主意,幾乎總是他們打算是私人的 – vals 2014-12-03 17:31:39

回答

0

給這個GridHelper一個名字,當你創建:

var grid = new THREE.GridHelper(1000, 5); 
    grid.position.set(45,0,25); 
    grid.name = "GridHelper"; 
    scene.add(grid); 

然後,您可以撥打:

scene.remove(scene.getObjectByName("Grid")); 

或者,如果你改變你的網格對象變量爲全局變量,你可以只需使用:

scene.remove(grid); 

您的代碼我因爲Grid-Center(obj.geometry.BoundingSphere.center.x/y/z)並不總是出現在場景中,所以If-查詢不會一直工作正常。

+0

這個答案只是讓我大惑不解。你是說如果它目前不在視圖中,它不會刪除它? 僅供參考,我做了這個,它的工作。謝謝 – 2014-12-14 20:09:29