【发布时间】:2020-06-06 15:22:36
【问题描述】:
我想要两个交互的滑块 - 当我更改一个时,它会立即更改另一个。现在简单地使用像“OnValueChanged”这样的事件是有问题的,因为它会创建一个无限循环(“OnValueChanged”实际上并不检查新值是否不同,它只是注册任何类型的值分配)。
那么有什么好的选择来获得这种期望的行为 - 即,当我更改一个滑块时,它也会更改另一个滑块,但这些更改实际上并没有调用任何事件?我的一些想法是:
1,我只是检查与之前的值是否有任何实际差异。这应该可以解决问题。这应该没问题,但我仍然有点害怕一些反馈循环,特别是如果有一些类型的转换或滑块之间的东西。
2,有一段时间我关闭了其他滑块。这似乎是最合理、最安全的选择,但我不确定该怎么做。我不知道统一如何首先检查更改。所以我有点不确定关闭其他滑块的“多长时间”。
3,与上面类似,但一个非常hacky,安全的解决方案是在每个滑块中保留某种布尔值bool。如果一个滑块发生变化,并且它即将改变其他滑块的值,我首先将所有这些中的bool 设置为 false。当在其他滑块上调用“onValueChanged”时,它会检查bool 的值,因为它是假的,它实际上并没有做任何事情,除了将bool 改回真。基本上我会关闭滑块进行一次更改。
【问题讨论】: