2013-05-07 5 views
0

г-Дуб добавил это на своем форуме/сайте для изготовления круговТри JS круг удалить

var resolution = 100; 
var amplitude = 100; 
var size = 360/resolution; 

var geometry = new THREE.Geometry(); 
var material = new THREE.LineBasicMaterial({ color: 0xFFFFFF, opacity: 1.0}); 
for(var i = 0; i <= resolution; i++) { 
    var segment = (i * size) * Math.PI/180; 
    geometry.vertices.push(new THREE.Vertex(new THREE.Vector3(Math.cos(segment) * amplitude, 0, Math.sin(segment) * amplitude)));   
} 

var line = new THREE.Line(geometry, material); 
scene.add(line); 

Я хотел бы, чтобы удалить некоторые круги, которые я сделал, но с использованием «scene.remove (строки)» doenst работы для me ...

PS

Это часть моего кода, который после создания круга на секунду я хочу снова избавиться от него.

var feetcircle; 
     var resolution = 100; 
     var amplitude = 140; 
     var size = 360/resolution; 

     var geometry = new THREE.Geometry(); 
     var material = new THREE.LineBasicMaterial({ 
      color: 0x00FF00, 
      opacity: 1.0 
     }); 




     for (var i = 0; i <= resolution; i++) { 
      var segment = (i * size) * Math.PI/180; 
      geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 0, (Math.sin(segment) * amplitude) + 375))); 
     } 

     for (var i = 0; i <= resolution; i++) { 
      var segment = (i * size) * Math.PI/180; 
      geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 410, (Math.sin(segment) * amplitude) + 375))); 
     } 

     for (var i = 0; i <= resolution; i++) { 
      var segment = (i * size) * Math.PI/180; 
      geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 285, (Math.sin(segment) * amplitude) + 375))); 
     } 


     feetcircle = new THREE.Line(geometry, new THREE.LineBasicMaterial({ 
      color: 0x00ff00, opacity: 1.0 
     })); 
     feetcircle.geometry.dynamic = true; 
     scene.add(feetcircle); 
+0

Покажите нам код, который вы написали. Этот код там создает только один круг. – 2013-05-07 04:00:50

+0

Я сделал, я отредактировал свое начальное сообщение :) – Tommy

ответ

0

Вы не добавляете отдельные объекты. Все эти вершины принадлежат одному и тому же объекту, так что вы не можете их тривиально удалить. Что вам нужно сделать, вместо этого:

for (var i = 0; i <= resolution; i++) { 
     var segment = (i * size) * Math.PI/180; 
     geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 0, (Math.sin(segment) * amplitude) + 375))); 
    } 

    feetcircle = new THREE.Line(geometry, new THREE.LineBasicMaterial({ 
     color: 0x00ff00, opacity: 1.0 
    })); 
    feetcircle.geometry.dynamic = true; 
    scene.add(feetcircle); 

    geometry = new THREE.Geometry(); 
    for (var i = 0; i <= resolution; i++) { 
     var segment = (i * size) * Math.PI/180; 
     geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 410, (Math.sin(segment) * amplitude) + 375))); 
    } 

    var feetcircle2 = new THREE.Line(geometry, new THREE.LineBasicMaterial({ 
     color: 0x00ff00, opacity: 1.0 
    })); 
    feetcircle2.geometry.dynamic = true; 
    scene.add(feetcircle2); 

    ... 
    scene.remove(feetcircle); 
    scene.remove(feetcircle2); 

и т.д ... Конечно, если вы действительно хотите быть в состоянии удалить их, вы либо дать им индивидуальные имена переменных, или поместить их в массив.

var circles = new Array(); 

for (int i = 0; i < 3; i++) 
{ 
    geometry = new THREE.Geometry(); 
    for (var j = 0;j <= resolution; j++) { 
      var segment = (j* size) * Math.PI/180; 
      geometry.vertices.push(new THREE.Vertex(new THREE.Vector3((Math.cos(segment) * amplitude) + (moves[move][move + '_mrfoot0'][0][0] * scale)-30, 410, (Math.sin(segment) * amplitude) + 375))); 
    } 
    feetcircle = new THREE.Line(geometry, new THREE.LineBasicMaterial({ 
     color: 0x00ff00, opacity: 1.0 
    })); 
    feetcircle.geometry.dynamic = true; 
    circles.push(feetcircle); 
    scene.add(circles[i]); 
} 

for (int i = 0; i < circles.length; i++) 
    scene.remove(circles[i]); 
+0

Вам нужно добавить var перед любыми переменными, которые вы еще не объявили ... – 2013-05-07 04:23:36

+0

Спасибо большое! – Tommy