在dat.gui中保存参数似乎有问题,或者我遗漏了一些非常明显的东西.
单击齿轮图标时会出现问题,该图标应打开一个带有要保存的JSON的弹出窗口.保存到本地存储也不适合我.这是两个JSFiddles:
> http://jsfiddle.net/navFooh/XZcde/ with dat.gui.min.js,单击齿轮会在控制台中抛出错误:Uncaught TypeError:无法读取未定义的dat.gui.min.js属性’forEach’:3
> http://jsfiddle.net/navFooh/8Hek6/使用dat.gui.js,单击齿轮图标确实显示带有JSON的弹出窗口,但参数x未显示
他们在线的样本工作正常(请参阅评论链接).但他们已经最小化了所有示例代码,包括lib本身.所以如果他们甚至使用最新的版本,我甚至无法解决.
任何帮助将不胜感激.
解决方法
我犯了调用gui.remember(obj)的错误;和gui.add(obj,’x’);在错误的顺序.
所以这是解决方案:
var obj = { x: 5 }; var gui = new dat.GUI(); gui.remember(obj); gui.add(obj,'x');
会发生什么是dat.gui在调用gui.add()函数时会记住要记住的对象的内部映射.保存值时,此映射gui .__ rememberedObjectIndecesToControllers []用于内部getCurrentPreset()函数.
但是,如果它们存储在gui .__ rememberedObjects []中,它只会向该地图添加对象,这就是订单如此重要的原因.
缩小版本抛出错误的原因是当它试图从gui .__ rememberedObjectIndecesToControllers []获取映射值时,它会尝试遍历未定义的值.
http://workshop.chromeexperiments.com/examples/gui/#5–Saving-Values上的样本实际上显示了这个正确的顺序,我只是忽略了它:
var fizzyText = new FizzyText(); var gui = new dat.GUI(); gui.remember(fizzyText); // Add controllers ...