cc.Action 要被抛弃, 但cc.tween有很多问题。

start() 忘记写导致运行没效果的情况倒是经常发生。
看大家的反馈,感觉默认启动、需要暂停时手动pause() 的姿势比较舒服。

还请问下
let jump = cc.jumpTo(0.4, cc.v2(x, y), 30, 1);
PlayerNode.runAction(jump);
这个jump的方法用tween怎么实现

我刚好在做一个新手教程,里边用到了
//跳跃动作 let jump = cc.jumpTo(1, cc.v2(location.x,this._minY), height, 1); //执行动作 cc.tween(this.nodePlayer).then(jump).start();

把Unity插件DOTween照搬过来就完美了

之前action有一个jumpBy和jumpTo的api,类似这种挺方便的,tween就得自己写了

有start灵活性好一点,有些情况只是想生成tween,并不想立即就执行。

emm…使用to吧,然后记录下target的初始位置以及点击次数就能实现这个需求了

原来.jumpTo可以放到tween里面啊
我纠结了好久
let jump = cc.jumpTo(0.4, cc.v2(pos.x, pos.y + 60), 30, 1);
let zmove = cc.tween().to(0.4, { zIndex: destination.node.zIndex + destination.heght })

    cc.tween(PlayerNode)
        .parallel(jump, zmove)
        .start()

这样做并行动作就方便多了 感谢提醒

为了stop,每次需要专门存储tween。然后如果已经stop了再stop会弹warn日志

请问action.easing(cc.easeElasticOut(3.0));这个3.0参数在cc.tween里怎么写? @jare

:grin:我猜引擎组以为用到这些函数的都是懂原理的,忽略了有一部分用户是通过一直变动参数来调试效果的

现在感觉最坑的俩个问题,一个是node.stopAllActions不能停止node上的所有tween动作,比如cc.tween(node.getComponent(cc.Sprite)).to(t,{fillRange:1}).start() 虽然解决了cc.Action没有解决的问题,但体验很差,想手动停止那就得事先保存tween实例

另一个是如果有tween在运行的时候切换场景,tween可能找不到目标节点而报异常,用户层面还捕获不了异常,这多坑啊,我切换场景前还得手动停止所有tween,那我就得自己维护一个还没播放完的tween列表,这一切都是为了兼容tween

另外总感觉tween的语法没有之前cc.Action描述能力强,有可能是先入为主的原因

3赞

再举个例子
cc.tween(node.getComponent(cc.Sprite)).to(1,{fillRange:1}).start()为什么就不允许写成cc.tween(node).to(1,{node.getComponent(cc.Sprite).fillRange:1}).start()这样的,要是同时对节点不同组件,不同属性做修改,第二种写法是不是方便多了

stopAllActions还是很常用的

tween能否加一个判断某个节点是否有正在运行的tween动画api,还有能否实现一个像unity的DoTween中的doCompelete函数,此函数能使当前的tween流程立即完成,此时节点的属性就是终值,望大佬采纳!!!

1赞