javascript - dat.GUI 创建多个同名按钮

标签 javascript dat.gui

我尝试使用 dat.GUI 创建多个具有相同名称“ShowCoord”的按钮,这可能吗?我目前拥有的是:

    for (i = 0; i < overlay.numElements; i ++)
    {
        var length = overlay.elementNumVertices[i];
        var subObj = {
            'name' : overlay.elementNames[i],
            'index' : i,
            'numVertices': overlay.elementNumVertices[i],
            "ShowCoord" : function(){
                console.log("i is " + subObj['index']);
                var verts = overlay.elementVertices[i];
                for(var j = 0; j < subObj['numVertices']; j ++)
                {
                    console.log("The coordinates are " + verts[3*j] + ", "+ verts[3*j+1] +", "+verts[3*j+2]);
                }
            }

        };
        subObjArray.push(subObj);
    }

    for(i = 0; i < subObjArray.length; i ++)
    {
        var currObj = subObjArray[i];
        var subGui = gui.addFolder(currObj['name']);
        subGui.add(currObj, 'numVertices');
        subGui.add(currObj, "ShowCoord");
    }

我现在显示了正确的 currObj['name'] 和 currObj['numVertices']。但所有“ShowCoord”按钮只包含最后一个 subObj 的信息(因此 console.log("i is "+ subObj['index']) 每次都会打印出 148,即使我单击不同的按钮)。我怎样才能让它发挥作用?非常感谢!

最佳答案

尝试将 subGui 移到 for 循环 之外并修改您的代码,这样就不会重新分配 subGui 变量。

var subGui = new dat.GUI();
for(i = 0; i < subObjArray.length; i ++)
{
    var currObj = subObjArray[i];
    subGui.addFolder(currObj['name']);// <--- work on this line
    subGui.add(currObj, 'numVertices');
    subGui.add(currObj, "ShowCoord");
}

否则它将始终使用for循环的最后一个迭代元素重新定义

<小时/>

注意:这只是一个提示,我无法从您的代码中得出更多结论。

关于javascript - dat.GUI 创建多个同名按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29111241/

相关文章:

javascript - Mongoose、Node.js 返回一个空数组

javascript - 如何在 javascript 中交换 HTML 元素?

javascript - DAT.GUI : modify width of text field in order to put a long text

javascript - dat.GUI 单击时调整大小

javascript - 如何在WP中找到特定的类

javascript - 如何显示href的react-intl翻译结果?

javascript - 在 jquery 中动态添加复选框和验证检查

Three.js & Dat.gui - TrackballControls renderer.domElement 禁用旋转和平移

svelte - 如何将 dat.gui 库导入到 Sapper/Svelte 项目中?

javascript - dat.gui 如何用代码隐藏菜单