我正在研究如何根据用户输入在dat.gui界面的下拉列表中显示条目,但我遇到的问题与dat.gui编程无关,而是我缺乏javascript技能
我有两个列表,一个显示Starsystem
,0
和1
作为名称。
另一个是Planets
,显示Starsystem
内的特定行星。
如何编写此语句,以便这两个数组仅在选择0或1时显示?
var jumpSwitcher = 0;
this.Starsystems = 'dat.gui';
//Starsystem list
gui.add(this, 'Starsystems', ['0', '1']).onChange(function(value) {
if (value === '1') {
jumpSwitcher = 1;
}
});
this.Planets = 'dat.gui';
//if the var jumpSwitcher is 0, display these variables in the Planets array.
if (jumpSwitcher === 0) {
Planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune'];
}
//if the jumpSwitcher is 1, meaning if the user has clicked on "1" under the Starsystem, show these planets.
else if (jumpSwitcher === 1) {
Planets = ['Ilos', 'Tuchanka', 'Palaven', 'Illium'];
}
gui.add(this, 'Planets', Planets).name("Planets in this system").onChange(function(value) {
});
我会说这应该有用,但不知怎的,它不行。当我简单地在语句中使条件成为if(1> 0){show 1} else {show 2}时,它就会这样做。
PS:
var jumpSwitcher = 1;
this.Starsystems = 'dat.gui';
gui.add(this, 'Starsystems', ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']).onChange(function(value) {
jumpSwitcher = +value;
});
this.Planets = 'dat.gui';
switch (jumpSwitcher) {
case 1:
gui.add(this, 'Planets', ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']).name("Planets in this system").onChange(function(value) {
});
break;
case 2:
gui.add(this, 'Planets', ['Ilos', 'Tuchanka', 'Illium', 'Palaven']).name("Planets in this system").onChange(function(value) {
});
break;
}
答案 0 :(得分:2)
您需要重置jumpSwitcher
更改
if (value === '1') {
jumpSwitcher = 1;
}
到
jumpSwitcher = +value;
这会将jumpSwitcher
设置为多个值。
另一个解决方案可能是数组内部值的值,如果这些值是连接的,则为数值而不是字符串。
gui.add(this, 'Starsystems', [0, 1]).onChange(function(value) {
// ^^^^^^
jumpSwitcher = value;
});