求助:重复顺序动作MoveTo位置不准确

使用repeat+sequence+moveto做动作(震动效果),希望最终位置不变。每次播完位置都会有细微的变化。
(原来是用moveby做,也是有偏差,就试着用moveto,结果还是一样)。
在首尾打印了位置,每次执行位置是对的,但是再次执行位置就不对。
代码如下:

cc.log(this.node.position.toString());
var ox1 = this.node.x + ox;
        var oy1 = this.node.y + oy;
        var ox2 = this.node.x - ox;
        var oy2 = this.node.y - oy;
        var ox3 = this.node.x;
        var oy3 = this.node.y;

        var repeat = cc.repeat(
            cc.sequence(
                cc.moveTo(t / 4, cc.p(ox1, oy1)),
                cc.moveTo(t / 2, cc.p(ox2, oy2)),
                cc.moveTo(t / 4, cc.p(ox3, oy3)),
            ), this.duration);

        this.node.runAction (repeat); 
cc.log(this.node.position.toString());

结果:
第一次:
(-400.00, 100.00)
(-400.00, 100.00)
第二次:
(-400.27, 99.73)
(-400.27, 99.73)
第三次:
(-400.67, 99.33)
(-400.67, 99.33)

=============
补充,又试了下,浏览器会出现比较大偏移,模拟器比较不会

还有个问题 sequence可以加回调判断播完,repeat怎么判断播完呢?

==============
另外一个问题,label用resizehight的时候,在模拟器宽度会失效,每行只显示一个字,变成竖排的了。
懒得另外开主题,顺便在这里问一下
1.2.1rc1,win版本

因为我这里无法重现,所以最好给一个 demo ,这样我们方便重现问题

您好,
我看了你的代码感觉写法有问题,这行代码:

cc.log(this.node.position.toString());

感觉不应该放在

this.node.runAction (repeat);

后面,因为输出位置信息的时候,this.node正在运动中(感觉出偏差的地方应该就是在这里),
如果想显示位置的话,应该在cc.sequence()函数的最后加一个回调函数作为参数。

1赞

多谢回复,,

实际情况是 多次重复运行之后就有肉眼可见的偏差,,打印log只是为了验证而已。。。
是做类似震动动画时候用到的,,
现在的解决办法是在动作结束后手动设回到初始位置

请问,我的也是每次moveto位置不准确,你解决没有?

抱歉 前几天在忙没看到
我是做类似物体震动的功能 所以先用了个土方法
计时器调位移 计时器结束重置回初始位置:joy: