cc.Tween 怎么获取持续时间?

好吧。。。。

执行.start()后会返回一个Tween对象,有个_finalAction属性,打印一下看看,里面有你想要的东西。

大佬nb~

小白表示没看出什么。。。

cc.tween 在调用 start 时会将之前生成的 action 队列重新组合生成一个 cc.sequence 队列,而_finalAction就是这个队列返回的。动动手打印看看,需要的属性、函数都在里面。

    var tween = cc.tween(this.node).by(4, {x: 10}).start();
    //cc.log(tween._finalAction._duration); 动作总时长
    //cc.log(tween._finalAction.getElapsed()); 动作已经播放时间
    //tween._finalAction.step(0);
    //tween._finalAction.step(2.5); 动画跳到2.5秒开始播放
3赞

膜拜,非常感谢

6p6p,大佬6p

大佬6666

谢谢大佬, 我们最后就用这个这个, 套了个函数。 官方没有 export js可以运行, ts 要报错。

适当的转一下any

能用就ok。以前cocos2dx的action用习惯了,前不久creator也遇到同样需求。就花点时间看看以前的用法有没有保留。

谢谢。

说实话, 一致觉得 typescript 了, 还 any。。。。

不过, 项目中避免不了, typescript 本身 也在不断的完善。

step是增加多少时间,也就是每帧渲染的时间间隔,不是当前多少时间。
CCActionManager这边的源码是
locCurrTarget.currentAction.step(dt * (locCurrTarget.currentAction._speedMethod ? locCurrTarget.currentAction._speed : 1));

是玩家间数据同步吗,能说下怎么解决的,我想的是切回来请求一次屏幕数据,然后刷新,但是就可能导致正在进行的动作没有表现

我想的是可不可以弄个动画管理类?所有动画执行的数据都放在这个类下处理和保存,重连的时候获取发送的时间戳和类中正在执行的动作数据,然后对比时间戳进行恢复?

:sweat_smile:我没说step是当前时间啊,注释不是写明白了

2dx的时候我也这么做,服务端记录了每个动作开始的时间戳,从后台切回来时获取重连数据,如果 当前时间 - 时间戳 > 客户端动画已经执行时间,就step(当前时间 - 时间戳),或者做个加速。当时没有接触帧同步或状态同步的概念,现在论坛有挺多相关帖子可以学习看看。

你那说的是跳到,不是增加,这是两个意思,你这里起始是0,这个例子还是挺特殊的。知道就行了,还是说下别让别人踩坑了

准备把Tween里面的_finalAction提出来,不用系统的CCActionManager执行,自己写个计时器执行看看,也好控制

就是因为我踩过坑啊,你直接写step(2.5)不生效,所以要先step(0)。在update里直接step可以生效。具体我没深究。