如果动画没有到达终点,GSAP 是否可以阻止 'onComplete' 的执行?

Is it possible in GSAP to prevent the execution of 'onComplete' if the animation didn't reach its endpoint?

如果动画是

,有没有办法阻止执行onComplete

我假设 onInterrupt 可以用于此?如果是,怎么做?


更新:

这是一个 jsfiddle 示例: https://jsfiddle.net/2f1jbwra/2/


jsfiddle 与 kill(): https://jsfiddle.net/2f1jbwra/4/
jsfiddle overwrite: "auto": https://jsfiddle.net/2f1jbwra/5/

中断的补间(和时间线)不会调用它们的 onComplete 回调,因为它们已被停止。因此,只需确保您的补间正在使用 overwrite: 'auto'overwrite: true.

杀死他们应该杀死的那些。

如果您实际上并没有中断补间,您可以通过使用 .addEventListener()null 作为第二个参数来删除 onComplete 回调。

如果您正在中断补间并且需要挂接到该事件,您可以使用 onInterrupt 回调,但在这种情况下这对您没有帮助。

还值得注意的是,如果补间从一开始就没有开始,则不会触发任何事件(包括 onComplete)。话虽如此,开始值和结束值相同的补间(就像您在问题中描述的情况一样)仍然像正常一样 运行 。只是你看不到任何变化,因为 none 是视觉上发生的。

仅供参考,如果您提出像这样的 GSAP 特定问题 in the GSAP forums

,您更有可能获得更快的答案和额外的 commentary/helpful 信息和方法