1

在生成 dat.GUI 下拉菜单时,我给出了一个字符串数组,这些字符串将作为下拉菜单条目。在用户选择时,相应的数据属性被更新为选择的菜单字符串。

有没有办法将菜单中的字符串与相应的值(可以是任何类型)分开?
例如,假设我的菜单是['King', 'Queen', 'Rook'],我希望我的属性能够获得相应的值。['A','B','C'][-1, 9, 5]

4

1 回答 1

5

是的。

想象一下下面的例子,

gui = new dat.GUI();
var text =
{
    speed: 'someName'
}
gui.add(text, 'speed', { King: 'A', Queen: 'B', Rook: 'C' } );

首先要做的是确定它是控制器(上图)还是文件夹。如果是前者,那么下拉菜单的位置可以在 中找到gui.__controllers(否则,如果是后者,那么位置可以在 中找到gui.__folders。如果您有多个控制器,则必须为下拉菜单 - 它将沿着dat.controllers.OptionController.e.

假设它是您唯一的控制器,那么您可以通过gui.__controllers[0].

下一步是弄清楚用户选择了什么。每个带有下拉菜单的控制器都有一个__select选项。在每个__select选项中,都有一个selectedOptions,它详细说明了用户选择的内容。

这将是 , 的形式gui.__controllers[0].__select.selectedOptions[0].value

如果选择 King,则返回的值为 A。

于 2015-06-23T10:35:23.773 回答