如何让按增量移动的矩形停在非增量整除的目标位置?
解决矩形移动到非步长整数倍目标位置的问题
这个场景我碰到过好多次了,核心问题就是目标坐标740无法被25-100之间的任何增量整除,所以靠“x等于740时停止”的逻辑永远触发不了。给你几个靠谱的解决思路:
- 调整停止判断逻辑,提前拦截越界移动:不要只判断
x == 740,而是判断x + 当前增量 >= 740。一旦满足这个条件,直接把x设置为740,然后停止移动。比如当前x是725、增量25时,下一次移动会到750,超过740,这时候直接跳转到740并停止,完美贴合目标位置。 - 动态调整最后一步的增量:每次移动前先计算剩余距离(
740 - 当前x),如果剩余距离小于当前增量,就把最后一步的增量替换成剩余距离,移动后刚好到达740。比如当前x是700、增量50,剩余距离40,那就移动40px到目标点再停止。 - 阈值判断(可选,适合允许微小偏差的场景):如果视觉上允许一点点误差,可以判断
abs(x - 740) < 阈值(比如阈值设为5px)时停止。不过这个方法只适合对位置精度要求不高的场景,优先推荐前两种。
本质上就是要跳出“必须刚好等于目标值才停”的思维定式,因为步长和目标值不匹配的情况下,这个条件根本无法触发。
内容的提问来源于stack exchange,提问作者user9146930
相关产品推荐
相关产品推荐

