9

Three.jsを使ったアプリケーション用に、dat.guiを使ってメニューを作りました。hキーを押すと、dat.guiで作成されたメニューを非表示にできることも発見しました。私の質問は、メニューをコードから直接表示/非表示にするにはどうすればよいですか?

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

 gui.???

DOMElement hide のプロパティを使用しようとしましたが、機能しますが、この機能を処理する独自の方法が必要です。呼び出す機能はありますか?キーストロークに関連する JavaScript イベントが、ライブラリ内のバインドを介してスコープに関連付けられていることに気付きました。しかし、これを行う正しい方法は何ですか?

4

7 に答える 7

12

私は同じ問題を抱えていて、次の方法で解決しました:

var gui = new dat.GUI();
dat.GUI.toggleHide();
于 2013-08-20T05:27:48.283 に答える
2

あなたが試すことができます

var gui = new dat.GUI();
 //... your logic here
gui.__proto__.constructor.toggleHide()
于 2016-10-15T16:40:03.047 に答える
1

あなたと私が探していたのは

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

内部関数のオープンクローズ がまさにこれを行っている2104 行目のソースからこれを取得しました。

GUI はその場で値の変更に反応します (コンソールから gui.closed を再割り当てして、動作を確認できます)。

于 2016-09-19T17:06:43.570 に答える
1

最新バージョンの時点:

gui.close();

于 2018-03-12T11:47:35.540 に答える
0

Ok は、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();
  }
于 2013-04-06T12:49:01.127 に答える
0

私はお勧めします:

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

クリック防止にもなります。toggleHide()それでもクリックすることは可能です。閉じるだけで、再び開く機会が残ります。

ユーザーに再度開いてほしくないので、うまくいきました;)

于 2015-07-29T08:14:55.223 に答える