Dat.gui 使用教程

简介: Dat.gui 使用教程

Dat.gui 使用教程

Dat.gui 使用教程:Dat.gui 是一个 GUI 组件,他可以为你的 demo 提供参数的设置。并且很容易上手。是个不错的写例子或测试单元ui组件。

基础用法

引入js 文件

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

初始化配置

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 会根据你设置的属性类型来渲染不同的控件

如果是Number 类型则用 slider来控制
如果是 Boolean 类型,则用 Checkbox来控制
如果是 Function 类型则用 button 来控制
如果是 String 类型则用 input 来控制

控制输入限制

控制限制输入项输入类型以及值

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 } );

选项组

可以使用文件夹给选项分组

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种类型颜色输入控制

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 的存储模式,而且可以分组存储


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');
};

当然你也可以把之前保存的数据在初始化时导入

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 配置项指定使用哪个分组的配置

事件

你可以为每一项设置一个监听事件 onChange 和 onFinishChange

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)
};

目录
相关文章
|
前端开发 JavaScript 定位技术
threejs绘制风羽
threejs绘制风羽
1543 0
基于three.js的牛逼轰轰的3D编辑器nunuStudio!
这是一款基于Three.js的3D编辑器,我之前一直喊错,叫人家"牛牛",因为我觉得它真的好牛,其实人家正确拼音喊“努努”! 可以发布web的运行包,直接可以网页端二次开发,真的不要太方便了!
基于three.js的牛逼轰轰的3D编辑器nunuStudio!
|
JavaScript
万事起头难:完整步骤带你学会Node.js环境配置
万事起头难:完整步骤带你学会Node.js环境配置
501 0
|
SQL Java 数据库连接
Mybatis-Plus常用的查询方法--看这一篇就够了!!!
前言: Mybatis-Plus作为Mybatis的增强,自己封装了很多简单还用的方法,来解脱自己写sql! 对于项目的搭建小编就不在说了,可以参考: SpringBoot+Mybatis-Plus的入门搭建与配置测试 这样就可以跟小编站在同一起跑线了,咱们直接开始介绍方法的使用哦!!
2275 2
|
JavaScript 前端开发 API
无界微前端是如何渲染子应用的?(下)
无界微前端是如何渲染子应用的?(下)
1104 0
|
1月前
|
人工智能 Linux iOS开发
【2026最新】Zed编辑器中文版+安装+AI辅助写代码一篇搞定
Zed编辑器是Atom原班团队打造的高性能开源代码编辑器,启动秒开、输入零延迟,深度优化多核与GPU加速。内置AI编程助手、原生多人协作,界面简洁无干扰,支持Windows/macOS/Linux,免费开源,被誉为“最后一代编辑器”。
|
存储 安全 Windows
硬盘接入电脑提示格式化?是什么原因?怎么解决?
有时候,当你将硬盘接入电脑时,看到系统弹出“使用驱动器中的光盘之前需要将其格式化”的提示,肯定会感到十分困惑和焦虑。这种情况不仅让人担心数据丢失,也可能影响正常使用。为什么硬盘会突然要求格式化?是硬盘出了问题,还是系统出现了故障?今天和大家一起聊一聊硬盘提示格式化的常见原因,以及可以采取哪些方法来解决它。
|
9月前
|
存储 关系型数据库 MySQL
07-Mysql容器环境搭建
本文介绍了MySQL的Docker环境搭建全过程,因CPU兼容性问题选用8.4.0-oraclelinux8镜像,详细说明了容器卷映射、配置文件设置、容器启动及数据库导入方法,并涵盖用户权限配置、数据备份与恢复、程序连接配置等关键操作,助力高效部署与管理MySQL数据库。
268 0
|
10月前
|
数据采集 存储 数据管理
元数据管理是什么?怎么管?
元数据管理是让数据成为真正资产的关键。它通过统一管理“关于数据的数据”,解决找数难、口径不一、追溯困难等问题,建立业务与技术间的共识,实现数据可发现、可理解、可信任,推动企业数据驱动落地。
|
数据可视化 前端开发 JavaScript
3分钟,教你搭建一个三维城市建筑可视化系统 ( Cesium 加载 shp 数据 )
3分钟,教你搭建一个三维城市建筑可视化系统 ( Cesium 加载 shp 数据 )
5089 0
3分钟,教你搭建一个三维城市建筑可视化系统 ( Cesium 加载 shp 数据 )