2013-05-01 27 views
8

Bir gui öğesini kaldırmak için bu işlevi buldum, ancak eski olduğunu düşünüyorum. Şimdiye kadar bir gui'nin herhangi bir parçasını nasıl kaldıracağını bilen başka kimseyi bulamadım, onun tümünün bir .GUI() ya da bir det.GUI() öğesine eklenmiş bir öğesi olsun. İlk büyük olasılıkla ihtiyacım olan şey için yeterli olacaktır (sadece dat.GUI() hepsini bir arada kaldırarak) ancak bir tanesi çok yararlı olacaktır! yöntemini arayamam 'removeChild' tanımsız ait, bu yüzden olduğunu tahmin ediyorum: Bir dat.gui'yi()dat.GUI öğesi nasıl silinir?

gui = new dat.GUI(); 

çıkarması gerekiyordu

...

removeGui(gui); 

function removeGui(gui, parent) 
{ 
    if(!parent) 
    { 
     parent = dat.GUI.autoPlaceContainer; 
    } 
    parent.removeChild(gui.domElement); 
} 

Ama hatayı geri verir autoPlaceContainer yanlış. parametreleri gui dat.gui'yi kaldırmak istediğiniz ve ebeveyn DAT başlatmasını bir DOMElement belirtmek olmasaydı üst kapsayıcı olduğunu gösterir

:

Bu fonksiyonun orijinal yazar bu notları bıraktı. GUI sonra bir ebeveyn geçmek zorunda değilsiniz.

+3

WOW kullanabilirsiniz! Bu yüzden ben deGUTI kaynak kodunun tüm içinden geçiyordum ve bir destroy() işlevi buldum, bu yüzden denedim ve bu örnekte yaptığınız her şeyden önce ... gui.destroy(); – user2287949

+1

Sadece gui.destroy() işlevini kullanmaya çalıştım ama bana bir hata veriyor: "yok etme işlevi değil". Bir cevapta tam olarak ne yaptığını gönderebilir misin? – Bakuriu

cevap

6
var gui = new dat.GUI(); 
item = gui.add(text, 'message'); 

silmek için:

folder.remove(item); 
+6

Kaldırma kullanırken bu hatayı almaya devam ediyorum "'Düğümde' removeChild 'yürütme başarısız oldu: Kaldırılacak düğüm bu düğümün bir alt öğesi değil" –

+0

Benim için aynı ... Bir çözüm buldun mu Ash Blue? –

+1

Tamam, bir çözüm buldum, senin için çalışacağından emin değilsin Ash. .min() veya .max() işlevini her kullandığınızda, denetleyiciyi bir var olana yeniden atamanız gerekir: 'var theItem = gui.add (obj,' x '); Örneğin, Örnek = theItem.min (0) .max (10); Öte yandan, bir dinleyici eklemek istiyorsanız, zincirleme yapmayın ve bir varlığa atamayın. Yani, theItem = theItem.min (0) .max (10); theItem.onChange (fonksiyonu (değer) {console.log (değer);}); 've değil' theItem = theItem.min (0) .max (10) .onChange (function (value) {console.log (value);}); '. Umarım yardımcı olur, bu konuda daha fazla araştırma yapmak için zamanım yok ... –

4

, sen gui.destroy()

+0

Tamam - sadece söylemek zorundayım - bu tüm dinleme denetleyicilerini kaldırmaz - eğer düzgün bir şekilde yapmak istiyorsanız, __listening dizilerinden (aynı zamanda örnek __folders özelliği içinde) denetleyicileri ve boş bir diziyle updateDisplays öğesini çağırır. – cybafelo