NoteZ_技术博客 NoteZ_技术博客
🏠 首页
  • 📚 Web技术
  • 📋 Npm笔记
  • 📑 Markdown
  • 📄 Git笔记
  • 📝 Nginx文档
  • 📓 Linux文档
  • 📖 技术文档
  • 📜 其他文档
  • 🧊 NodeJs
  • 🎡 Express
  • 🔥 Rust
  • 🎉 Koa2
  • 🍃 MongoDB
  • 🐬 MySql
  • 🥦 Oracle
  • 🍁 Python
  • 🍄 JavaScript
  • 🌰 CSS
  • 🧄 HTML
  • 🥑 Canvas
  • 🌽 Nuxt
  • 🍆 React
  • 🥜 Vue
  • 🧅 TypeScript
  • 🌶️ AI
  • 📘 分类
  • 📗 标签
  • 📙 归档
⚜️ 在线编辑 (opens new window)
  • 📁 站点收藏
  • 📦 前端组件库
  • 📊 数据可视化
  • 🌈 开源插件
  • 🎗️ 关于我
  • 🔗 友情链接
GitHub (opens new window)

NoteZ_技术博客

前端界的小学生
🏠 首页
  • 📚 Web技术
  • 📋 Npm笔记
  • 📑 Markdown
  • 📄 Git笔记
  • 📝 Nginx文档
  • 📓 Linux文档
  • 📖 技术文档
  • 📜 其他文档
  • 🧊 NodeJs
  • 🎡 Express
  • 🔥 Rust
  • 🎉 Koa2
  • 🍃 MongoDB
  • 🐬 MySql
  • 🥦 Oracle
  • 🍁 Python
  • 🍄 JavaScript
  • 🌰 CSS
  • 🧄 HTML
  • 🥑 Canvas
  • 🌽 Nuxt
  • 🍆 React
  • 🥜 Vue
  • 🧅 TypeScript
  • 🌶️ AI
  • 📘 分类
  • 📗 标签
  • 📙 归档
⚜️ 在线编辑 (opens new window)
  • 📁 站点收藏
  • 📦 前端组件库
  • 📊 数据可视化
  • 🌈 开源插件
  • 🎗️ 关于我
  • 🔗 友情链接
GitHub (opens new window)
  • Web技术

  • Git笔记

  • Linux文档

  • Markdown

  • Nginx文档

  • Npm笔记

  • 技术文档

  • 其他文档

    • 解决 bash_wget 未找到命令的解决办法
    • CentOS7 常见问题应对,如何升级make和gcc版本
    • CodeMirror代码编辑器实现自定义提示功能增强版(支持搜索、调用接口查询提示内容)
    • CSS 滚动条样式
    • d3 svg 基本图形绘制
    • d3.js中update,enter,exit的概念
    • dat.gui 基本使用方法
      • 安装
      • 使用
      • 控制输入限制
      • 从GUI外部控制配置项
      • new GUI([params])
        • gui.addFolder(string)
        • gui.removeFolder(文件夹)
        • gui.parent
        • gui.preset
        • gui.add(object,prop,[min],[max],[step])
        • gui.addColor(对象,属性)
        • gui.remove(控制器)
        • gui.destroy()
        • 折叠,展开,隐藏,显示
        • gui.getRoot()
        • gui.getSaceObject()
      • 单选
      • 按钮
      • 下拉框
      • controller
        • .object =>object .property=>string
        • onChange 改成值时触发
        • onFinishChange(fn)
        • getValue() setValue(newValue)
        • controller.isModified() => Boolean
      • Demo
      • api文档
      • 其他
    • echarts 使用案例(demo)
    • jsplumb 中文基础教程
    • Linux服务器(centos7)使用LibreOffice将Word转换PDF文档出现中文乱码或方格解决方法
    • npm install 报错 npm ERR code UNABLE_TO_VERIFY_LEAF_SIGNATURE npm ERR errno UNABLE_TO_VERIFY_LEA 解决
    • Npm 清除缓存
    • Npm设置淘宝镜像
    • NPS内网穿透安装方法
    • ThreeJs 基础入门
    • unable to verify the first certificate 原因及解决方法
    • vue 安装node-sass报错解决方案(缺少python2.7支持)
    • windows下安装 stable-diffusion-webui 步骤
    • yarn的安装与使用
    • 关于微信支付 WeixinJSBridge.invoke 、 wx.chooseWXPay使用方法
    • 内网穿透的几款工具汇总
    • 前端使用 swd-deploy 自动化部署项目到服务器
    • 常用工具集(utils.js)
    • 开源项目大杂烩
    • 微信小程序-APP生命周期与运行机制总结
    • 微信小程序踩坑之布局适配单位(rpx、px、vw、vh)
    • 服务器常用的状态码
    • 解决google浏览器翻译无法使用的问题
    • 解决使用 Gitalk 登录授权报错的问题
    • 解决在使用 stable-diffusion-webui 时,安装 gfpgan 失败的方案(windows下的操作)
    • 通过 js 进行 shapefile 文件解析渲染方法
    • 部署脚本 deploy.sh
    • Tauri打包慢或者报错问题解决方法
    • Ubuntu和Nginx搭配Certbot配置SSL证书https访问网站
    • Centos下yum无法正常使用
    • Linux 系统下通过 Let‘s Encrypt 生成免费 https 证书的步骤
    • Mongo 风格的查询对象映射到 SQL 查询的 Node.js 库 json-sql
    • CentOS7安装与卸载anaconda3基础步骤
  • 前端开发
  • 其他文档
NoteZ
2022-07-11
目录

dat.gui 基本使用方法

dat.gui是款神器产品.一个调试利器,用起来很简单很简单 1660808997171-7.png

# 安装

npm install --save dat.gui
1

# 使用

const dat = require('dat.gui');

// ES6:
import * as dat from 'dat.gui';

const gui = new dat.GUI({
  name: 'My GUI',
  width: 300,
  closed:true
});
1
2
3
4
5
6
7
8
9
10

# 控制输入限制

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

gui.add(text, 'noiseStrength').step(5); // 增长的步长
gui.add(text, 'growthSpeed', -5, 5); // 最大、最小值
gui.add(text, 'maxSize').min(0).max(10).step(0.25); // 最大小值和步长
 
// 文本输入项
gui.add(text, 'message', [ 'pizza', 'chrome', 'hooray' ] );
 
// 下拉框形式选择文案
gui.add(text, 'speed', { Stopped: 0, Slow: 0.1, Fast: 5 } );
1
2
3
4
5
6
7
8
9

# 从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)
};
1
2
3
4
5
6
7
8
9
10
11
12
13

# new GUI([params])

var gui = new dat.GUI({name: 'My GUI'});
// 创建一个GUI ,添加一个子盒子
var gui = new dat.GUI();
var folder1 = gui.addFolder('Flow Field');
1
2
3
4
Param Type Default Description
[params] Object
[params.name] String 此GUI的名称
[params.load] Object 放在预设的实例
[params.parent] dat.gui.GUI
[params.autoPlace] Boolean true 如果为false,就是不实用默认定位方式
[params.hideable] Boolean true 如果为true,则通过按键h显示/隐藏GUI
[params.closed] Boolean false 如果为true,则开始折叠
[params.closeOnTop] Boolean false 如果为true,则关闭/打开按钮显示在GUI的顶部,也就是说默认情况下,打开的按钮在顶部,关闭的时候按钮在底下

例如

const gui = new dat.GUI({name:'aaa',hideable:false,closed:true,closeOnTop:false});
1

例如autoPlace的使用方式,我们需要把他添加到我们需要放置的位置

const gui = new dat.GUI({autoPlace:false});
// 添加id
gui.domElement.id = 'ccc';
// 在你需要添加的dom,把它放在里面
box.appendChild(gui.domElement)
gui.domElement拿到最外层的DOM
1
2
3
4
5
6

然后,我们只需要修改css就可以了

#ccc{
  position: absolute;
  top:50%;
  left:50%;
}
1
2
3
4
5

设置默认模式,感觉这个不常用

const obj = {
  message: 'Hello World',
  explode: function () {
    alert('Bang!');
  },

};

var gui = new dat.GUI();

gui.remember(obj);

gui.add(obj, 'message');
gui.add(obj, 'explode');
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# gui.addFolder(string)

创建一个子盒子实例

# gui.removeFolder(文件夹)

删除一个子盒子实例

// 添加一个子盒子
let one=gui.addFolder('nameOne')
one.addColor(options,'color1')
// 删除一个子盒子
gui.removeFolder(one)
1
2
3
4
5

# gui.parent

拿到父级的实例

let obj={
  child:1
}
const gui = new dat.GUI();
// 创建一个子孩子
const folder=gui.addFolder('nameOne')

folder.add(obj,'child',-1,1,0.1);
//拿到父级的GUI实例
console.log(folder.parent);
//拿到对应的文件夹名称
console.log(folder.name);
1
2
3
4
5
6
7
8
9
10
11
12

# gui.preset

保存的标识符,可以展示默认显示哪组

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

window.onload = function() {
  const options = new Options();
  const gui = new dat.GUI({
    load:{
      "preset": "kkkkks",// 默认展示kkkks选项
      "closed": false,
      "remembered": {
        "Default": {
          "0": {
            "number": 4
          }
        },
        "kkkkk": {
          "0": {
            "number": 6
          }
        },
        "kkkkks": {
          "0": {
            "number": 8
          }
        }
      },
    }
  });
  // 标记保存的对象,但是不修改预设的值
  gui.remember(options);
  gui.add(options, 'number').min(0).max(10).step(1);
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# gui.add(object,prop,[min],[max],[step])

添加控制器

对象object,属性string,最小值number,最大值numer,步长number
.min()
.max()
.step()
1
2
3
4

# gui.addColor(对象,属性)

颜色控制器添加到GUI

var palette = {
  color1: '#FF0000', // CSS string
  color2: [ 0, 128, 255 ], // RGB array
  color3: [ 0, 128, 255, 0.3 ], // RGB with alpha
  color4: { h: 350, s: 0.9, v: 0.3 } // Hue, saturation, value
};
gui.addColor(palette, 'color1');
gui.addColor(palette, 'color2');
gui.addColor(palette, 'color3');
gui.addColor(palette, 'color4');
1
2
3
4
5
6
7
8
9
10

# gui.remove(控制器)

删除控制器

// 定义标记的控制器
let color3= gui.addColor(options,'color3')
// 删除对应的控制器 
gui.remove(color3);
1
2
3
4

# gui.destroy()

从文档中删除根GUI

  gui.destroy()
1

# 折叠,展开,隐藏,显示

  // 折叠
  gui.close();
  // 展开
  gui.open();
  // 隐藏
  gui.hide();
  // 显示
  gui.show();
1
2
3
4
5
6
7
8

# gui.getRoot()

拿到最顶层的实例,我再把他折叠了

  one.getRoot().close()
1

# gui.getSaceObject()

一个JSON对象,表示此GUI的当前状态及其属性

# 单选

const options = {
  fale:true
};
1
2
3

# 按钮

const options={
    randomw(){
        alert(333)
    }
}
1
2
3
4
5

# 下拉框

gui.add(object, key, array/object );
1
const options = {
  color5:'xxxx',
  speed:40,
  types:'two'
};
const gui = new dat.GUI();
gui.add(options, 'color5');
gui.add(options,'types',['one','two','three']) // 第一种
gui.add(options,'speed',{slow:1,fast:40}) // 第二种
1
2
3
4
5
6
7
8
9

# controller

let one = gui.addFolder('nameOne')
 one.addColor(options, 'color1')
let two = one.addFolder('nameTwo');
two.addColor(options, 'color1')
console.log(one.name);
// nameOne
console.log(one.domElement);	
// 拿到当前控制器的dom
// 这个应该是监听值得更改进行更新,进行更新
  one.listen(two)
// 删除对应的控制器
let two = one.addFolder('nameTwo');
let three = two.addColor(options, 'color1')
two.remove(three)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# .object =>object .property=>string

const Options = {
  number: 1,
  color5: 'xxxx'
};
const options = Options;
const gui = new dat.GUI();
gui.add(options, 'color5');
let controll= gui.add(options, 'number')
console.log(controll.property); // number
console.log(controll.object);//  {number: 1, color5: "xxxx"}
1
2
3
4
5
6
7
8
9
10

# onChange 改成值时触发

只要通过此控制器修改值,就会调用此函数

let three = two.addColor(options, 'color1')
three.onChange(val=>{
  console.log(val);
})
1
2
3
4

# onFinishChange(fn)

去掉焦点的时候触发,对数字或者字符串有效

const Options = function () {
  this.number = 1;
  this.color5 = 'xxxx';
};
gui.add(options, 'number').min(0).max(10).step(1).onFinishChange(val=>{
  console.log(val);
});
gui.add(options, 'color5').onFinishChange(val=>{
  console.log(val);
})
1
2
3
4
5
6
7
8
9
10

# getValue() setValue(newValue)

查询设置值

const one=gui.add(options, 'color5');
one.setValue('333')
console.log(one.getValue());//333
controller.updateDisPlay()
1
2
3
4

刷新此控制器的视图显示,以便与对象的当前值保持同步

const options = {
  color5: 'xxxx',
  speed: 40,
  types: 'two'
};
const gui = new dat.GUI();
let num = gui.add(options, 'speed', 10, 20, .1);
options.speed=12
// 比如直接修改对象,然后更新
gui.updateDisplay()
1
2
3
4
5
6
7
8
9
10

# controller.isModified() => Boolean

如果值偏移初始值则返回true

const options = {
  color5: 'xxxx',
  speed: 40,
  types: 'two'
};
const gui = new dat.GUI();
let one = gui.add(options, 'types', ['one', 'two', 'three'])
  one.onChange(val=>{
      // 我们发现当不等于two 则返回true
    console.log(one.isModified());
  })
1
2
3
4
5
6
7
8
9
10
11

# Demo

var obj = {
    message: 'Hello World',
    displayOutline: false,

    maxSize: 6.0,
    speed: 5,

    height: 10,
    noiseStrength: 10.2,
    growthSpeed: 0.2,

    type: 'three',

    explode: function () {
      alert('Bang!');
    },

    color0: "#ffae23", // CSS string
    color1: [ 0, 128, 255 ], // RGB array
    color2: [ 0, 128, 255, 0.3 ], // RGB with alpha
    color3: { h: 350, s: 0.9, v: 0.3 } // Hue, saturation, value
};

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

gui.remember(obj);

gui.add(obj, 'message');
gui.add(obj, 'displayOutline');
gui.add(obj, 'explode');

gui.add(obj, 'maxSize').min(-10).max(10).step(0.25);
gui.add(obj, 'height').step(5); // Increment amount

// Choose from accepted values
gui.add(obj, 'type', [ 'one', 'two', 'three' ] );

// Choose from named values
gui.add(obj, 'speed', { Stopped: 0, Slow: 0.1, Fast: 5 } );

var f1 = gui.addFolder('Colors');
f1.addColor(obj, 'color0');
f1.addColor(obj, 'color1');
f1.addColor(obj, 'color2');
f1.addColor(obj, 'color3');

var f2 = gui.addFolder('Another Folder');
f2.add(obj, 'noiseStrength');

var f3 = f2.addFolder('Nested Folder');
f3.add(obj, 'growthSpeed');

obj['Button with a long description'] = function () {
  console.log('Button with a long description pressed');
};
gui.add(obj, 'Button with a long description');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

1660809062172-7.png

# api文档

https://github.com/dataarts/dat.gui/blob/master/API.md

# 其他

  • 刷新 gui.updateDisplay()
  • 销毁 gui.destory()
#Gui
上次更新: 2024/01/30, 00:35:17
d3.js中update,enter,exit的概念
echarts 使用案例(demo)

← d3.js中update,enter,exit的概念 echarts 使用案例(demo)→

最近更新
01
Gitea数据备份与还原
03-10
02
Linux 中使用 rsync 同步文件目录教程
03-10
03
Linux 使用 rsync 互相传输同步文件的简单步骤
03-08
更多文章>
Theme by Vdoing | Copyright © 2019-2025 NoteZ,All rights reserved | 冀ICP备2021027292号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式