Dat.gui 使用教程

官方站點:http://workshop.chromeexperiments.com/examples/gui/javascript

Dat.gui 使用教程:Dat.gui 是一個 GUI 組件,他能夠爲你的 demo 提供參數的設置。而且很容易上手。html

基礎用法

引入js 文件java

<script type="text/javascript" src="https://raw.github.com/dataarts/dat.gui/master/build/dat.gui.min.js"></script>

初始化配置git

var Options = function() {
  this.message = 'dat.gui';
  this.speed = 0.8;
  this.displayOutline = false;
  this.button = function() {};
};

window.onload = function() {
  var options = new Options();
  var gui = new dat.GUI();

  gui.add(options, 'message');
  gui.add(options, 'speed', -5, 5);
  gui.add(options, 'displayOutline');
  gui.add(options, 'button');
};

這裏,在你的配置項:FizzyText 裏,GUI 會根據你設置的屬性類型來渲染不一樣的控件github

  • 若是是Number 類型則用 slider來控制
  • 若是是 Boolean 類型,則用 Checkbox來控制
  • 若是是 Function 類型則用 button 來控制
  • 若是是 String 類型則用 input 來控制

控制輸入限制

控制限制輸入項輸入類型以及值chrome

gui.add(text, 'noiseStrength').step(5); // 增加的步長
gui.add(text, 'growthSpeed', -5, 5); // 最大、最小值
gui.add(text, 'maxSize').min(0).step(0.25); // 最大值和步長

// 文本輸入項
gui.add(text, 'message', [ 'pizza', 'chrome', 'hooray' ] );

// 下拉框形式選擇文案
gui.add(text, 'speed', { Stopped: 0, Slow: 0.1, Fast: 5 } );

選項組

能夠使用文件夾給選項分組dom

var gui = new dat.GUI();

var f1 = gui.addFolder('Flow Field');
f1.add(text, 'speed');
f1.add(text, 'noiseStrength');

var f2 = gui.addFolder('Letters');
f2.add(text, 'growthSpeed');
f2.add(text, 'maxSize');
f2.add(text, 'message');

f2.open();

顏色值的輸入

提供4種類型顏色輸入控制ide

  • CSS
  • RGB
  • RGBA
  • Hue
var Options = function() {
  this.color0 = "#ffae23"; // CSS string
  this.color1 = [ 0, 128, 255 ]; // RGB array
  this.color2 = [ 0, 128, 255, 0.3 ]; // RGB with alpha
  this.color3 = { h: 350, s: 0.9, v: 0.3 }; // Hue, saturation, value
};

window.onload = function() {

  var options = new Options();
  var gui = new dat.GUI();

  gui.addColor(options, 'color0');
  gui.addColor(options, 'color1');
  gui.addColor(options, 'color2');
  gui.addColor(options, 'color3');
};

存儲

能夠使用 remember 方法開啓 GUI 的存儲模式,並且能夠分組存儲ui

var Options = function() {
  this.color0 = "#ffae23"; // CSS string
};

window.onload = function() {
  var options = new Options();
  var gui = new dat.GUI();

  gui.remember(options); 
  
  gui.addColor(options, 'color0');
};

固然你也能夠把以前保存的數據在初始化時導入this

var Options = function() {
  this.number = 1;
};

window.onload = function() {
  var options = new Options();
  var gui = new dat.GUI({
    load:{
      "preset": "kkkkk",
      "closed": false,
      "remembered": {
        "Default": {
          "0": {
            "number": 4
          }
        },
        "kkkkk": {
          "0": {
            "number": 6
          }
        }
      },
      "folders": {}
    }
  });

  gui.remember(options);
  gui.add(options, 'number').min(0).max(10).step(1);
};

能夠經過 preset 配置項指定使用哪一個分組的配置

事件

你能夠爲每一項設置一個監聽事件 onChangeonFinishChange

var Options = function() {
  this.number = 1;
};

window.onload = function() {
  var options = new Options();
  var gui = new dat.GUI();
  var controller = gui.add(options, 'number').min(0).max(10).step(1);

  controller.onChange(function(value) {
    console.log("onChange:" + value)
  });

  controller.onFinishChange(function(value) {
    console.log("onFinishChange" + value)
  });
};

獲取面板DOM對象

能夠經過 gui.domElement 獲取原生 dom 對象

從GUI外部控制配置項

若是你想從外部控制選項,你能夠爲選項調用 listen 方法,則你改變option時,也會同步到面板裏

var Options = function() {
  this.number = 1;
};

window.onload = function() {
  var options = new Options();
  var gui = new dat.GUI();
  var controller = gui.add(options, 'number').min(0).max(10).step(1).listen();

  setInterval(function() {
    options.number = Math.random() * 10;
  }, 500)
};

相關文章
相關標籤/搜索