1.10.2 版本 发现一个有趣现象 应该是BUG吧

节点初始位置为(0,0),先上移50,再下移50 位置发生了偏差。

代码如下:

打印结果如下

是正常现象,因为使用动作的时候,会分到每一帧去执行,比如移动50像素,用60帧执行,每帧就是移动增加坐标50/60像素,float计算又不可能完全准确所以最后结果就会有极小的偏差。
所以想要精确位置请使用moveTo这种动作。
但是话说个人觉得像【by】这种动作是否也可以参照【to】的结果,每一帧还是修改计算出来的浮点值,最后一帧直接修改成初始值+最终值,应该就不会出现这种问题了。

2赞

其实cc.moveto也是有浮点数的,要保证动作的精度可以在动作完成后再给一次计算。

之前在项目里的做法是 动作结束后做一次位置校验;
这个问题在 2.0.8测试 没有位置偏差;