【问题标题】:Initiating tween after completion of previous tween. - Greensock / ScrollMagic在完成前一个补间后启动补间。 - Greensock / ScrollMagic
【发布时间】:2014-11-05 07:50:03
【问题描述】:

尝试使用 GreenSock / ScrollMagic JS 为页面上的 div 设置动画。我想在第一个补间完成后在我的动画框中触发第二个动画。因此,将框向下移动 300 像素,然后将其向左移动 300 像素。我将如何添加补间序列。我的代码笔是 -

http://codepen.io/anon/pen/HfFwJ

我使用的 JS 是 -

// init the controller
var controller = new ScrollMagic({
    globalSceneOptions: {
        triggerHook: "onLeave"
    }
});


// pinani
var pinani = new TimelineMax()

    // panel slide translateX
    .add(TweenMax.to("#slide-dos", 1, {top: "150px"})) // panel slide top
    .add(TweenMax.to("#slide-dos", 1, {left: "500px"})) // panel slide left
    .add(TweenMax.from( $('#slide-dos'), 0.5, {css:{scale:0.05, opacity:0, top: "100px"}, ease:Quad.easeInOut }));



// panel section pin
new ScrollScene({
        triggerElement: "section#pin",
        duration: 1100
    })
    .setTween(pinani)
    .setPin("section#pin")
    .addTo(controller);

我的 HTML 的结构 -

<div class="row">
  <div class="large-12 columns"></div>
</div>

<section id="pin" class="scroll-magic-section">
  <div id="spacer">

    <div class="row">
      <div class="large-12 columns">
        <div id="slide-banner">
          <div class="container">
            <h3>Banner</h3>
          </div>
        </div>
      </div>
    </div>
    <div class="row">
      <div class="large-12 columns">
        <div id="slide-pre">
          <div class="container">
            <h3>Pre-Animation</h3>
          </div>
        </div>
      </div>
    </div>
    <div class="row">
      <div class="large-12 columns">
        <div id="slide-dos">
          <div class="container">
            <h3>Animation Box</h3>
          </div>
        </div>
      </div>
    </div>
</section>

简而言之,我想为幻灯片制作动画,以便它在完成 top:300px 后添加 left:300px。

非常感谢任何帮助! :)

DIM3NSION

【问题讨论】:

    标签: javascript jquery css gsap scrollmagic


    【解决方案1】:

    虽然@reekogi 的回答是正确的,但它过于复杂。
    如果您仍然使用时间轴,只需创建这样的序列:

    var pinani = new TimelineMax()
        .add(TweenMax.to("#slide-dos", 1, {top: "300px"})) // panel slide top
        .add(TweenMax.to("#slide-dos", 1, {left: "300px"})); // panel slide left
    

    更多信息请看这里:http://greensock.com/docs/#/HTML5/GSAP/TimelineMax/add/

    【讨论】:

    • 太棒了,谢谢 Jan。作为另一个问题,我怎么能说在向下移动页面时将 div 缩放到一半大小。所以同时有2个动画。查看文档后,我在语法上苦苦挣扎
    • 嗨 Jan - 一直在尝试解决这个问题,是语法错误,因为它没有为 .add(TweenMax.to("#slide-dos", 1, {top: "150px"})) // 面板滑动顶部 .add(TweenMax.to("#slide-dos", 1, {left: "500px"})) // 面板向左滑动 .add(TweenMax.from( $( '#slide-dos'), 0.5, {css:{scale:0.05, opacity:0, top: "100px"}, ease:Quad.easeInOut }));还用正确的格式编辑了问题
    • 嗨!这确实是一个 GSAP 问题。只需在最后一个 add 调用中提供一个 0 作为第二个参数,这样它将被添加到时间线的开头。如前所述,请务必阅读文档,这也可能会有所帮助:greensock.com/jump-start-js
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多