【问题标题】:TweenMax change in-progress bezierTweenMax 更改进行中的贝塞尔曲线
【发布时间】:2010-11-29 18:10:31
【问题描述】:

是否可以使用 TweenMax 在一个基于贝塞尔的动画和另一个基于贝塞尔的动画之间进行平滑过渡?

在第一个完成之前,我想为要跟随的对象创建一条新曲线。

t = new TweenMax(movieClip, speed, 
{bezierThrough:[{x:84, y:207}, {x:300, y:345}],
orientToBezier:false, ease:Sine.easeOut, onComplete:walkComplete } );

有一个名为 setDestination 的方法可以即时调整目标参数,但它似乎只能产生线性动画。

http://www.greensock.com/as/docs/tween/com/greensock/TweenMax.html#setDestination()

【问题讨论】:

    标签: flash actionscript-3 tween


    【解决方案1】:

    较新的 updateTo 方法正是我需要的:

    http://www.greensock.com/as/docs/tween/com/greensock/TweenMax.html#updateTo()

    【讨论】:

      【解决方案2】:

      使用 setDestination 可以通过设置 x 和 y 属性来实现平滑过渡。我增加了即将结束的补间的持续时间,以防止快速跳转到新的目的地。

      if ( t.progress > .8)
       t.duration += 1;
       t.setDestination("x", points[1].x);
       t.setDestination("y", points[1].y);
      

      【讨论】:

        【解决方案3】:

        每次补间更新被补间的对象时,您可以调用一个函数,方法是传入一个更新函数来调用,如下所示:

        t = new TweenMax(movieClip, speed, 
        {bezierThrough:[{x:84, y:207}, {x:300, y:345}],
        orientToBezier:false, ease:Sine.easeOut, onComplete:walkComplete, onUpdate:walkInProgress } );
        

        更新函数可以检查对象的 x 和 y 线,并在最后创建新曲线。您的 onComplete 函数可以在新曲线上制作动画。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-10
          • 1970-01-01
          • 1970-01-01
          • 2013-01-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多