【问题标题】:JS/GSAP solution for infinite animation无限动画的JS/GSAP解决方案
【发布时间】:2018-06-29 21:04:12
【问题描述】:

我正在尝试创建一个无限的星雨动画,所有的星星都是 SVG 的。 我试过这个来创建动画:

(function($) {
TweenMax.set(".astar", {
  x:function(i) {
    return i * 50;
  }
});


TweenMax.to(".astar", 5, {
  ease: Linear.easeNone,
  x: "+=500", //move each box 500px to right
  modifiers: {
    x: function(x) {
      return x % 500; //force x value to be between 0 and 500 using modulus
    }
  },
  repeat: -1
});
})(jQuery);

正如您在此 Codepen 上看到的那样,重复过程并不顺利: https://codepen.io/daniellwdb/pen/NXogoB 是否有任何 JS 或 GS​​AP 解决方案可以使动画平滑,使其看起来像星星不断从左侧生成并向右移动?

【问题讨论】:

    标签: javascript jquery animation svg gsap


    【解决方案1】:

    根据您当前的设置,我认为最简单的方法是复制您的星空,以便下一个循环的开头与第一个循环的结尾相同。假设这是您的星空 SVG:

    |...o.|
    |o....|
    |..o..|
    

    您的新“复制”星空基本上是:

    |...o.|...o.|
    |o....|o....|
    |..o..|..o..|
    

    因此,当您将复制的图像从左向右移动 100% 时,您在最后一个“帧”中看到的内容与它循环时返回的内容相同。

    这是一个展示这个概念的小提琴:https://jsfiddle.net/yarp4oLs/5/

    我有两个相同的 200x200 星场图像(并排时为 400x200),它们显示在 200x200 的“视口”容器中。然后我只是将它们向左滑动 200px 并重复。即时明星!

    【讨论】:

    • 感谢您的评论克里斯,您是否有此解决方案的小代码,以便我可以尝试使其适用于我的代码?我对这种动画方法没有经验
    • 你打赌,@Meza。我已经用 jsfiddle 的链接编辑了我的答案。
    • 这就是我想要实现的目标,还没有运气将它实现到我的代码中,是否可以编辑我在我的问题中更新的那个以获得相同的影响? @Chris Riebschlager
    猜你喜欢
    • 2019-06-26
    • 2012-04-02
    • 2017-08-08
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2011-11-07
    相关资源
    最近更新 更多