在 dat.gui 中保存参数似乎有问题,或者我遗漏了一些非常明显的东西。
单击齿轮图标时会出现问题,该图标应打开一个弹出窗口,其中包含要保存的 JSON。另外,保存到本地存储对我来说不起作用。这是两个 JSFiddle:
http://jsfiddle.net/navFooh/XZcde/ http://jsfiddle.net/navFooh/XZcde/使用 dat.gui.min.js,单击齿轮会在控制台中引发错误:Uncaught TypeError: Cannot read property 'forEach' of undefined dat.gui.min.js:3
http://jsfiddle.net/navFooh/8Hek6/ http://jsfiddle.net/navFooh/8Hek6/使用 dat.gui.js,单击齿轮图标确实会显示带有 JSON 的弹出窗口,但参数x
不显示
他们在线提供的示例工作正常(请参阅链接的评论)。但他们已经最小化了所有示例代码,包括库本身。所以我什至无法确定他们是否使用最新版本。
任何帮助将不胜感激。
我打电话时犯了错误gui.remember(obj);
and 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[]
,它尝试循环undefined
value.
样本于http://workshop.chromeexperiments.com/examples/gui/#5--Saving-Values http://workshop.chromeexperiments.com/examples/gui/#5--Saving-Values实际上显示了这个正确的顺序,我只是忽略了它:
var fizzyText = new FizzyText();
var gui = new dat.GUI();
gui.remember(fizzyText);
// Add controllers ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)