Animation Can';t使GSAP返回初始状态

Animation Can';t使GSAP返回初始状态,animation,timeline,gsap,Animation,Timeline,Gsap,。。。我在网上搜寻答案。 我在这篇文章中尽可能地将问题归结为: 有两个按钮,您单击Go,然后单击Boost。 我试图在Boost动画结束后将整个svg恢复到其初始位置,以便您可以反复播放相同的序列 我尝试了其他帖子中建议的各种解决方案: // tl.pause(0); // tl.restart(); // tl.remove(); 我也尝试过使用重复的TimeLineMax,但这只是在第一次单击Go按钮后重复第一个动画序列。我不太确定您最终要做什么(这可能会极大地影响我建议如何构建此效果)

。。。我在网上搜寻答案。 我在这篇文章中尽可能地将问题归结为:

有两个按钮,您单击Go,然后单击Boost。 我试图在Boost动画结束后将整个svg恢复到其初始位置,以便您可以反复播放相同的序列

我尝试了其他帖子中建议的各种解决方案:

// tl.pause(0);
// tl.restart();
// tl.remove();

我也尝试过使用重复的TimeLineMax,但这只是在第一次单击Go按钮后重复第一个动画序列。

我不太确定您最终要做什么(这可能会极大地影响我建议如何构建此效果),但这里有一个叉子,我相信它能达到你想要的结果:

在动画有机会运行之前,您的代码已经跳回开始。另外,它重复使用相同的时间线,并不断增加,这不是很有效

要使其返回到开始并在完成后立即停止,只需使用onComplete回调,如:

tl.eventCallback("onComplete", function() {
   tl.pause(0);
});
有很多其他的方法可以做到这一点,但我不想让你不知所措:)

您可能会更幸运地在位于的专门GSAP论坛中提问


快乐的吐温

对不起,没有我想的那么直截了当。。。我在这里使用oncomplete回调做了一个非常简单的代码笔,我不明白为什么它不工作:。控制台日志不会被触发;这是否意味着TimeLineSite永远不会完成?该代码笔中的问题是,在onComplete中调用tl.pause(0),但在任何地方都没有声明“tl”变量,因此它会抛出JS错误。不过,函数的调用是正确的。如果删除不正确的tl引用,您将看到:我真傻!谢谢你的耐心。现在循环。请注意,restart()可以工作,但不能暂停(0);tl.pause(0)在您的演示中对我非常有效-我很好奇为什么您认为它不起作用。它跳回到0(开始)的时间并暂停。是吗?它现在可以在代码笔中工作了,多亏了你建议的@Jack更改