TweenMax改变进行中的bezier

时间:2009-09-19 17:09:27

标签: flash actionscript-3 tween

是否可以使用TweenMax在一个基于bezier的动画和另一个基于Bezier的动画之间平滑过渡?

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

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()

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

每次补间通过传入更新函数来更新被补间对象时,你可以调用一个函数,如下所示:

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函数可以在新曲线上设置动画。

答案 2 :(得分:0)

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

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