是否可以使用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()
答案 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);