2013-02-05 104 views
7

我做了使用dat.gui一个菜单,我的applcation与three.js所。 它工作得很好,我还发现,按H键可以隐藏与dat.gui创建的菜单。 我的问题是如何使菜单显示/直接从代码中消失?dat.gui如何隐藏菜单,代码

var gui = new dat.GUI(); 
gui.add(text, 'message'); 
gui.add(text, 'speed', -5, 5); 

gui.??? 

我试图使用DOMElement隐藏的属性,它的工作原理,但我想要一个独特的方式来处理这个功能。 有一个函数可以调用?我注意到与按键相关的JavaScript事件通过库中的绑定与范围相关。 但什么是这样做的正确方法?

回答

0

确定找到了一个解决方案通过添加下列函数原型dat.GUI的:

dat.GUI.prototype.removeFolder = function(name) { 
    var folder = this.__folders[name]; 
    if (!folder) { 
     return; 
    } 
    folder.close(); 
    this.__ul.removeChild(folder.domElement.parentNode); 
    delete this.__folders[name]; 
    this.onResize(); 
    } 
8

我哈得同样的问题和解决它:

var gui = new dat.GUI(); 
dat.GUI.toggleHide(); 
+5

这里还有'gui.close()' – dpren

+0

@CompanyLaser但gui.close()滚动控制起来,而'dat.GUI.toggleHide()'其实隐藏它们(由设置zIndex方式为负)。您只能通过API一次性隐藏所有GUI,而不是单独隐藏。除非你跟踪最后一个状态,否则你不能断言它们被显示或隐藏。 – binki

-1

您可以切换“关闭“类的第一个ul标签内的主题元素。

下面是如何,如果你正在使用jQuery来做到这一点:

var gui = new dat.GUI(); 
$(gui.domElement).find(">ul").toggleClass("closed"); 
-1

我建议:

$(gui.domElement).attr("hidden", true); 

,因为它也可以防止点击。使用toggleHide()仍然可以点击它。 就关闭它留下的机会,重新开放。

为我工作,因为我不希望用户重新打开它;)

0

什么你和我寻找的是

var gui = new dat.GUI(); 
// to toggle it closed 
gui.closed = true; 
// to toggle it open again 
gui.closed = false; 

我在线2104得到这个从the source在内部功能开放密切 正在做的正是这一点。

gui会随时对价值变化做出反应(您可以从控制台重新分配gui.closed以查看它的实际效果)。

0

您可以尝试

var gui = new dat.GUI(); 
//... your logic here 
gui.__proto__.constructor.toggleHide()