3.x的tween缓动动画如何中途停止?

如题, tween的缓动效果
如何在节点中,对指定tween(如有多个)进行对应的停止控制。
另,能否在tween的.call()回调中进行停止控制(如下)?

         tween(this.node)
            .to(1, { position: new Vec3(0, 30, 0) }, { easing: 'quadOut' })
            .call(() => {
                log(1)
            })
            .to(2, { position: new Vec3(0, 0, 0) },{ easing: 'quadIn' })
            .call(() => {
                log(2)
            })
            .union()
            .repeat(1) // 执行 1 次
            .start();

Tween.stopAllByTarget

谢谢,请问这个是放在什么位置使用的呢?.cal()回调里面吗?

你想在哪里用就加在哪里啊,只需要保证target是你想要停止的那个正在缓动的对象就行。

  1. 如果要停止某个tween
let tweenObj = cc.tween().start()
// 在某个需要的时机调用
tweenObj.stop()
  1. 如果要停止多个tween, 用个数组来保存所有tween, 或者用标签
let tween1 = cc.tween().tag(1).start()
let tween2 = cc.tween().tag(1).start()
cc.Tween.stopAllByTag(1)
  1. 如果想暂停某个节点的所有动作, 后续再恢复
let target = this.node
cc.TweenSystem.instance.ActionManager.pauseTarget(target)
// 在需要恢复的时机调用
cc.TweenSystem.instance.ActionManager.resumeTarget(target)
  1. 如果想暂停当前的游戏所有动作, 例如做网络重连
let pausedTargets = cc.TweenSystem.instance.ActionManager.pauseAllRunningActions()
// 在需要恢复的时机调用
cc.TweenSystem.instance.ActionManager.resumeTargets(pausedTargets )
3赞

感谢,很详细了

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。