代码之家  ›  专栏  ›  技术社区  ›  JoSch

ScrollMagic+TweenMax:同时绘制多个SVG路径?

  •  0
  • JoSch  · 技术社区  · 6 年前

    ScrollMagic

     // Prepare SVG
      function pathPrepare_journey($el) {
        var lineLength_journey = $el[0].getTotalLength();
        $el.css("stroke-dasharray", lineLength_journey);
        $el.css("stroke-dashoffset", lineLength_journey);
      }
    
      var $journey1 = $("path#path1");
      var $journey1_2 = $("path#path2");
      var $journey1_3 = $("path#path3");
    
      pathPrepare_journey($journey1);
      pathPrepare_journey($journey1_2);
      pathPrepare_journey($journey1_3);
    
      // Reference to container
      var container = $("#section1");
      var containerHeight = $(container).height();
      var vpHeight = $(window).height();
    
      // Init controller
      var SVGcontroller_journey = new ScrollMagic.Controller();
    
      // Build tween
      var tween_journey = new TimelineMax().add(
        TweenMax.to($journey1, 1, { strokeDashoffset: 0, ease: Linear.easeNone })
      );
    
      // Build scene
      var scene = new ScrollMagic.Scene({
        triggerElement: container,
        duration: containerHeight - vpHeight / 2,
        tweenChanges: true
      })
        .setTween(tween_journey)
        .addIndicators({
          name: "Draw Journey Lines#1",
          colorTrigger: "brown",
          colorStart: "brown",
          colorEnd: "brown",
          indent: 600
        })
        .addTo(SVGcontroller_journey);
    

    它工作得非常好,但是正如您所看到的,我的SVG中有三条单独的路径( $journey1 $journey1_2 $journey1_3 ),而ScrollMagic场景目前只画其中一个, $行程1 ,因为我只能在 TimelineMax()

    $行程1 ?

    我可以添加其他路径,但它们是连续绘制的:

    // Build tween
      var tween_journey = new TimelineMax()
        .add(
          TweenMax.to($journey1, 1, { strokeDashoffset: 0, ease: Linear.easeNone })
        )
        .add(
          TweenMax.to($journey1_2, 1, { strokeDashoffset: 0, ease: Linear.easeNone })
        );
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   JoSch    6 年前

    我发现,我可以在TweenMax时间线内按类确定路径,如下所示:

    var tween_journey = new TimelineMax();
    tween_journey.to(".cls-2", 1, { strokeDashoffset: 0, ease: Linear.easeNone });