Config() Details – Leap Motion API

之前在看Leap Motion的API文档的时候发现一个有趣的问题,就是config()函数的用法。关于Leap Motion的设置都是存储在特定的键(Key)里面的,更改就是更改特定键的键值(Value)。如键Circle手势最小半径(Gesture.Circle.MinRadius)键值就是float型的5.0,单位为mm。
一般情况下是用getFloat/getBool/getInt32/getString获取键值,setFloat/setBool/setInt32/setString设置键值。

有趣的有两点:
1.每次用上述set语句设置后均需要运行save(),该设置才会生效。
2.程序关闭后设置复原回默认值。

为什么说这两点有趣:
1.set语句本身如果有设置功能的话,为什么最后需要一个save呢?如果没有的话,意义何在?
2.程序的设置存储在哪?是作为程序变量?还是文本存储到硬盘?

我们做了一个小的试验:
1.1我们尝试过先setFloat某个键值,然后不执行config::save(),直接getFloat该键值,发现该键值已经更改,但是设备本身的设置没有改变。
1.2接着我们尝试先setFloat某个键值,执行config::save(),然后getFloat该键值,发现该键值已经更改,设备本身的设置随之改变。
1.3我们尝试先setFloat某个键值,执行config::save(),然后getFloat该键值,该键值更改,设备本身的设置改变。关闭程序再打开,发现键值已经重置,但是设备设置仍然有效。
1.4然后我们重复第三步,最后关闭程序并重启计算机再打开,发现键值已经重置,设备设置已经重置。

推断:
1.setFloat的功能作用在于更改键值,save的功能在于将该更改告诉Service
2.键值应该是作为程序变量存在,而Service具体的设置参数则保存在计算机内存中。

意义:
1.每次程序运行,都应该有一个初始化的过程,按事先设定的设置初始化一遍。
2.用户自定义的设置(如果有的话),可以保存为文本或者其他格式的文件到硬盘中。每次程序运行先查询该设置文件是否存在,存在则读取设置进行初始化。

其他:
在Windows下,C:\ProgramData\Leap Motion文件夹中存在文件config.json,里面内容应该是Leap Motion的设置,通过Leap Motion Control Panel可更改其设置。但该文件是Service设置文件还是中间层的设置文件现在还无法定论。

如无注明,均为原创。转载请注明: 转载自MITGAI`S THINKING
本文链接地址: Config() Details – Leap Motion API

知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

如果本文对您生活或工作产生了积极影响,那我非常高兴。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。
支付宝捐赠
anyShare分享到:

发表回复