如何让 GSAP 选取框项目立即更改行,而不是等待所有项目完成动画?

How to make GSAP marquee item change line immediately, not waiting all items finished animation?

我是Oliver,网络动画小白,这两天在做gsap marquee side project,建了500个dom盒子作为沙箱url:

https://codesandbox.io/s/gsap-marquee-test-6zx2d?file=/src/App.js&fbclid=IwAR1tbmloHRXHUBHKG5FjBGDAx0TFd9sTkBJfSwpye8CQteO-TO8FNi1w4mw

我有几个问题:

1.I使用setTimeout将每一个盒子分隔成一个唯一的时间轴动画,这样单个盒子动画可以在最后一行完成后立即转到另一行,而不是等待其他499个盒子在同一时间完成如果我使用 属性 stagger.

这种方法会产生500个时间轴实例,看来不是个好主意,有没有什么方法可以在一个或几个时间轴中产生相同的动画?

2.If我在canvas做这样的动画,浏览器渲染效率会更好吗?

您应该避免将 setTimeout 与 GSAP 一起使用,因为最好使用 GSAP 来控制事物的时间。

在这种情况下,您或许可以利用 GS​​AP 的 staggers. You should also learn about the position parameter 时间线。如果您使用其中一个(或两者,取决于您需要的确切效果),您应该能够避免创建这么多时间线。

此外,您的动画没有响应。您可能希望使用具有时间轴失效功能的功能属性(补间的属性是功能,而不仅仅是硬数字)以使其响应。

我还强烈建议您在制作其中一些文章时阅读 the most common GSAP mistakes 文章。

至于使用 canvas 来渲染你的盒子,这可能取决于你的盒子是什么样的。在大多数情况下,使用 canvas 可能会更快,是的。但是,为这些框设置动画的缓慢部分本身与动画功能本身没有任何关系。它与渲染速度有关。一般来说,将一堆对象渲染为 canvas 比渲染一堆 DOM 元素要快。