javascript - 如何使用数组将变量插入到 dat.Gui 中?

标签 javascript arrays user-interface dat.gui

我尝试通过数组声明变量以在 dat.Gui Controller 中使用它们。这是我的尝试:

<script>
  window.Horizontale = 300;
  window.Vertikale = 300;
  window.A = new Array();

  for (var i=1; i<7; i++) {
    window.A[i] = false;
  }

  window.onload = function() {
    var gui = new dat.GUI();
    gui.add(window, 'Horizontale', 0, 600);
    gui.add(window, 'Vertikale', 0, 600);

    for (var i=1; i<7; i++) {
      gui.add(window, A[i]);
    }
    gui.remember(window);
  };
</script>

数组中的变量不会出现在 GUI 中。我对Javascript真的很陌生,所以也许这只是声明的问题?

最佳答案

在这一行中:

gui.add(window, A[i]);

...add()看着物体 window对于具有 A[i] 指定的名称的属性,在本例中计算结果为 false .

但是,没有名为 false 的属性上window 。因此,您需要在某个对象上指定具有所需名称的属性,然后您可以为每个属性分配您想要作为附加参数传递给 add() 的值。 – 在这种情况下,false会给你一个未选中状态的复选框。

因此,假设您想要 6 个名为 1 - 6 的未选中复选框,您可以执行一些操作,但它们都涉及向某个对象的某处添加 6 个命名属性。这是使用第二个对象来保存 Controller 名称的一种方法,它将替换您的第二个 for循环:

for (var i=1; i<7; i++) {
  controller_names[i] = A[i];
  gui.add(controller_names, i, A[i]);
}

但是,这可能无法很好地使用保存设置功能 - dat.gui 似乎只能保存 gui 对象本身定义的控件的设置,如下所示:Save dat.gui presets for dynamically added controls?

...在这种情况下,您可以尝试类似这样的操作:

<script>
  window.onload = function() {

    var gui = new dat.GUI();
    gui.Horizontale = 300;
    gui.Vertikale = 300;
    gui.A = new Array();

    for (var i=1; i<7; i++) {
      gui.A[i] = false;
    }

    gui.add(gui, 'Horizontale', 0, 600);
    gui.add(gui, 'Vertikale', 0, 600);

    for (var i=1; i<7; i++) {
      gui.add(gui.A, i, gui.A[i]);
    }
    gui.remember(gui);
  };
</script>

关于javascript - 如何使用数组将变量插入到 dat.Gui 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14844557/

相关文章:

javascript - 节点/元素/对象之间有什么区别?

ios - OpenGL ES 2.0,使用多个顶点缓冲区进行绘制

java - 如何在我的图形用户界面中绘制准确的行数?

winapi - 开发具有一些图形编辑器功能的小型且快速的 GUI 应用程序的最佳组合是什么 - C++ 和(VB 或 Win32)?

c - 在 C 中读取字符串时出现访问冲突错误

java - 在 Java 中,使用 GUI 构建器或手动编码制作 GUI(Swings) 是一种好习惯吗?

javascript - JS for循环中的局部变量到全局变量,循环结束后值发生变化

javascript - 如何从数组中获取javascript中的列表

javascript - jQuery:为匹配选择器的每个元素执行代码

Java 彩票数组程序