在 GUI 的方程式上需要一点帮助 "Slider"

Need a little help on an equation for a GUI "Slider"

这是一个让我头疼的小方程式,我快要解决了,但是-呃。 我会尽量及时。

我有这个:

如您所见,它是一个从 0.1 倍到 3 倍难度的滑块。

我还有其他类似的滑块,例如音频滑块,从 0% 到 100%。

效果很好。

但是,当最小值大于 0 时,我的数学有点问题,我无法做到 完美地将条一直滑动到底部,因为它不是 0,而是 0.1。

我想达到即使最小值不为 0,条形图一直为空的位置。

这里是相关的equations/calculations:

var percent = val/val_max
var adjustment = ((x2-x1)*val_min)-((((x2-x1)*val_min)*percent)*val_min)
var x2_final = (x1+((x2-x1)*percent))-adjustment

percent是当前值相对于最大值的百分比(0.0到1.0)

adjustment 试图根据当前值从 x2_final 中额外找到多少 add/remove 以保持滑块在最小值时正确缩放不是 0。(这就是问题所在)

x2_final 是滑块根据之前的计算应该停止的最终(以像素为单位)坐标。

最初,滑块在满时会过度填充(已通过当前调整修复),但现在滑块不会完全变空,并留下“0.1”的滑块。

我通常不使用论坛或 Whosebug,因为我试图自己解决问题,但如果我的解释需要解决,我深表歉意。

这是我将滑块调到最低时的样子:

此外,如果我有更多与数学相关的问题,是否有任何好的工具可以帮助我像这样模拟我的计算,以便人们可以 运行 自己或其他什么东西?

提前致谢!

解决了!

所以我的方程式调整有点不对。

现在看起来像这样:

var percent = val/val_max
var percent_min = val_min/val_max
var adjustment = ((x2-x1)*percent_min)-(((x2-x1)*percent_min)*percent)
var x2_final = (x1+((x2-x1)*percent))-adjustment

现在滑块可以正确地填满并清空到底部, 不管最小值是多少。

但我还注意到,当我滑动它时,它并没有跟随我的鼠标移动。 因此,为了解决这个问题,我不得不稍后在我的代码中更新滑块的当前值,因为用户单击并更改它...

var mouse_x_percent = round2((mouse_x-x1+adjustment)/(x2-x1+adjustment),2)

只需将调整添加到该计算的两侧(获得 mouse_x 相对于滑块本身的开始和结束的百分比,然后通过乘以计算新值mouse_x_percent 与最大值)。

(Round2() 接受两个数字,第一个是要舍入的数字,第二个是小数点后几位)

总是喜欢解决问题,希望这对其他人有帮助。