删除多个具有相同名称的项目?

时间:2015-09-14 16:46:45

标签: javascript three.js

我正在添加" n"场景中的圈数。

var radius = 1; 
var segments = 32; 
var circleGeometry = new THREE.CircleGeometry( radius, segments); 
function generateCircles(){
  //scene.remove(circle);
  var count=0;
  while (1000> count) {
    circle = new THREE.Mesh (circleGeometry, material);
    scene.add (circle);
    count ++;
  }
}

这样做是否有效?。

在我的代码中我调用了这个函数,每次调用它时,它都会变慢,我猜它是因为场景中有更多的对象。我该怎么办?

每次调用该函数时,我都需要从内存阶段中完全删除生成的圆圈。

http://jsfiddle.net/v8oxsxtc/

1 个答案:

答案 0 :(得分:0)

如果您在将圆圈添加到场景后不需要移动或更改圆圈,将它们全部合并到一个网格中并将它们作为一个网格添加到场景会更有效。然后,您可以在生成更多圆圈之前从场景中删除一个网格:

var radius = 1; 
var segments = 32; 
var circleGeometry = new THREE.CircleGeometry(radius, segments); 
var circlesMesh;

function generateCircles() {
  if (circlesMesh) { scene.remove(circlesMesh); }
  circlesMesh = new THREE.Mesh(circleGeometry, material);
  var count = 0;
  while (count++ < 999) {
    THREE.GeometryUtils.merge(circlesMesh, new THREE.Mesh(circleGeometry, material));
  }

  scene.add(circlesMesh);
}