2014-01-30 6 views
11

Ich habe eine Threejs-Szene erstellt, mit Kamera, Lichtern und verschiedenen Objekten.Wie kann ich THREEJS Scene zerstören?

Die Frage ist einfach: Wie kann ich Szene zerstören? Alle Komponenten aus der Szene entfernen?

Ich muss Szene zu zerstören, weil und ich nicht möchte die Aufgabe an den Garbage Collector delegieren.

+0

Was mit Garbage Collector falsch? Das Erstellen einer neuen Szene und das Zurücklassen einer Variablen, die auf die alte zeigt, sollten ausreichen, um sie zu zerstören. Lösung unten tut das gleiche trotzdem. Fehle ich etwas oder ist das "Zerstören" eigentlich sinnlos? – lot

Antwort

21

Ich habe diese:

cancelAnimationFrame(this.id);// Stop the animation 
    this.renderer.domElement.addEventListener('dblclick', null, false); //remove listener to render 
    this.scene = null; 
    this.projector = null; 
    this.camera = null; 
    this.controls = null; 
    empty(this.modelContainer); 

Verfahren als Ersatz jQuery leer leer ist, können Sie es verwenden:

function empty(elem) { 
    while (elem.lastChild) elem.removeChild(elem.lastChild); 
} 
+0

In meinem Projekt arbeiten sehr gut, um die Szene zu säubern und neu zu starten. Wenn Sie etwas effizienteres finden, posten Sie es bitte;) –

+1

TOP !! Ich habe "cancelAnimationFrame" verlassen, ich wusste es nicht! –

+1

was ist DAS? Leinwand Eltern von Scene? – Martin