在 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() 接受两个数字,第一个是要舍入的数字,第二个是小数点后几位)
总是喜欢解决问题,希望这对其他人有帮助。
这是一个让我头疼的小方程式,我快要解决了,但是-呃。 我会尽量及时。
我有这个:
如您所见,它是一个从 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() 接受两个数字,第一个是要舍入的数字,第二个是小数点后几位)
总是喜欢解决问题,希望这对其他人有帮助。