Javascript dat.GUI不';我更改对象时不会更新 问题描述:
有两个变量:Javascript dat.GUI不';我更改对象时不会更新 问题描述:,javascript,dat.gui,Javascript,Dat.gui,有两个变量: controller1 = {i: 100}; controller2 = {i: 300}; 和控制变量 control = controller1; 我将dat.GUI附加到控件.I gui = new dat.GUI(); controller = gui.add(control, "i"); controller.listen(); 因此,它显示controller1.i的值,当我在dat.GUI中更改值时,它会更改controller1.i的值 gui = new
controller1 = {i: 100};
controller2 = {i: 300};
和控制
变量
control = controller1;
我将dat.GUI附加到控件.I
gui = new dat.GUI();
controller = gui.add(control, "i");
controller.listen();
因此,它显示controller1.i
的值,当我在dat.GUI中更改值时,它会更改controller1.i
的值
gui = new dat.GUI();
controller = gui.add(control, "i");
controller.listen();
之后,我跑:
control = controller2;
当我在dat.GUI
中更改值时,我希望它更改controller2.I
,但现在它更改controller1.I
gui = new dat.GUI();
controller = gui.add(control, "i");
controller.listen();
这是钢笔:
或堆栈片段:
controller1={i:100};
控制器2={i:300};
控制=控制器1;
click.addEventListener(“click”,function()){
control=control==controller1?controller2:controller1;
});
gui=新的dat.gui();
controller=gui.add(控制,“i”);
controller.listen();
setInterval(函数(){
current.textContent=JSON.stringify(控件);
x、 textContent=JSON.stringify(controller1);
y、 textContent=JSON.stringify(controller2);
},1000/24)
控制器1:
控制器2:
更改控制器
当前控制器的值:
问题在于,通过调用controller=gui.add(control,“i”)
传递的是控件的引用(当前controller1
),而dat.gui创建了该引用的内部副本。因此,如果覆盖ClickEventListener dat.gui中的控件
,则仍然保留对controller1
的引用,并且dat.gui上的所有更改都趋向于controller1
。我在dat.gui中找不到任何重置传递的引用的可能性,除了删除先前添加的控制器并传递一个新的控制器。我很愚蠢。。。这非常简单:
click.addEventListener("click", function() {
control = control == controller1 ? controller2:controller1;
controller.object = control;
// change the internal reference in dat.GUI
});
在检查dat.GUI
对象之后,我发现了这种方法
测试用例:我已经知道了dat.GUI
保存一个内部引用。我想要的是找到在dat.gui中重置传递的引用的任何可能性,而不删除先前添加的控制器并传递新的控制器。但是谢谢你回答这个问题。一定有人在回答这个问题,否则赏金会被扔进垃圾桶。我为什么得到你的赏金?你能把它钉回去吗?“我的回答不能解决你的问题。”桑德罗伊德读了我的评论。如果我不给你赏金,赏金就会变成垃圾。