正在刷新 dat.gui 变量
Refreshing dat.gui variable
这是 dat.gui 界面中的下拉列表。单击任意数字后,jumpSwitcher 将是您选择的任何数字。我正在尝试根据用户为 Starsystem
.
选择的内容替换与其特定编号相关的每个列表
所以 solPlanets= ['Ilos', 'Tuchanka', 'Illium', 'Palaven']
是当您单击 2 时列表 2 中显示的内容。默认情况下,solPlanets 显示 ['Mercury'、'Venus'、'Earth'、'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune'] 因为默认是 jumpSwitcher = 1.
问题是,列表将始终显示为 solPlanets= ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']
,无论 jumpSwitcher 是否为 2。
我通过在 jumpSwitcher 为 2 时发出警报消息来确认这一点,警报弹出,但列表不会改变。
这可能与 dat.gui 不更新的类似问题有关。
我已经尝试过 listen() 方法,因为它是给出的主要答案,但它对我没有用。
我做了一个fiddle。
PS:我以前问过这个问题,但现在我意识到这可能与 dat.gui 不刷新值而不是 javascript 有关。所以我删除了那个问题,因为它有点触及了错误的受众,我没有为它做 fiddle。
您必须为行星列表重新创建控制器。
我修改了你的 jsfiddle 示例 here。
中的主要内容
function updatePlanets(id) {
var controller = gui.__controllers[2];
controller.remove();
gui.add(data, 'Planets', planets[id]).onChange(doSomeStuff);
//back to 0 element
data.Planets = 0;
gui.__controllers[2].updateDisplay();
}
此外,当我将 DAT.GUI 的版本更改为 0.6.1
时,它开始工作了
这是 dat.gui 界面中的下拉列表。单击任意数字后,jumpSwitcher 将是您选择的任何数字。我正在尝试根据用户为 Starsystem
.
所以 solPlanets= ['Ilos', 'Tuchanka', 'Illium', 'Palaven']
是当您单击 2 时列表 2 中显示的内容。默认情况下,solPlanets 显示 ['Mercury'、'Venus'、'Earth'、'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune'] 因为默认是 jumpSwitcher = 1.
问题是,列表将始终显示为 solPlanets= ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']
,无论 jumpSwitcher 是否为 2。
我通过在 jumpSwitcher 为 2 时发出警报消息来确认这一点,警报弹出,但列表不会改变。 这可能与 dat.gui 不更新的类似问题有关。 我已经尝试过 listen() 方法,因为它是给出的主要答案,但它对我没有用。
我做了一个fiddle。
PS:我以前问过这个问题,但现在我意识到这可能与 dat.gui 不刷新值而不是 javascript 有关。所以我删除了那个问题,因为它有点触及了错误的受众,我没有为它做 fiddle。
您必须为行星列表重新创建控制器。
我修改了你的 jsfiddle 示例 here。
中的主要内容function updatePlanets(id) {
var controller = gui.__controllers[2];
controller.remove();
gui.add(data, 'Planets', planets[id]).onChange(doSomeStuff);
//back to 0 element
data.Planets = 0;
gui.__controllers[2].updateDisplay();
}
此外,当我将 DAT.GUI 的版本更改为 0.6.1
时,它开始工作了