Actionscript 3 与tweenlite Dos'平滑过渡;行不通

Actionscript 3 与tweenlite Dos'平滑过渡;行不通,actionscript-3,gsap,Actionscript 3,Gsap,我有一个向量圆,下面要做什么: 我想用tweenlite制作动画,这样看起来就像爆炸的冲击波。起初它会淡入(从0到.5)并进行缩放,当它达到总动画时间的一半时,它会淡出,但仍会进行缩放(希望你知道我的意思) 现在看起来很糟糕,因为我不知道如何使用TweenLite从第1部分顺利过渡到第2部分。我的动画在到达第1部分末尾时停止,并突然跳转到第2部分 有人能帮我解决这个问题吗?非常感谢。:) 动画的总时间:.75秒 缩放总量:5 part 1 of 2: TweenLite.to(blastwav

我有一个向量圆,下面要做什么:

我想用tweenlite制作动画,这样看起来就像爆炸的冲击波。起初它会淡入(从0到.5)并进行缩放,当它达到总动画时间的一半时,它会淡出,但仍会进行缩放(希望你知道我的意思)

现在看起来很糟糕,因为我不知道如何使用TweenLite从第1部分顺利过渡到第2部分。我的动画在到达第1部分末尾时停止,并突然跳转到第2部分

有人能帮我解决这个问题吗?非常感谢。:)

动画的总时间:.75秒 缩放总量:5

part 1 of 2:

TweenLite.to(blastwave, .375, {alpha:.5, transformAroundCenter:{scale:2.23},
            onComplete:blastScaleFadeOut, onCompleteParams:[blastwave]});


part 2 of 2:

private function blastScaleFadeOut(object:DisplayObject, time:Number = .375, scaleVal:Number = 4.46) {

TweenLite.to(object, time, {alpha:0, transformAroundCenter:{scale:scaleVal},
    onComplete:backgroundSprite.removeChild, onCompleteParams:[object]});

}

TweenLite将缓和函数应用于tween过渡以控制变化率,默认缓和是一个四元组。EaseOut(这意味着tween过渡中的变化率将在使用二次函数接近终点时减速)。这就是为什么你会看到如此突然的变化(或“跳跃”),因为在两个吐温(或你称之为部分)的“接合点”处,变化的速度是完全不同的:第一个吐温的速度是最慢的,因为它已经到了终点,而另一个吐温的速度是最快的,因为它刚刚开始

恐怕唯一能真正确保不会出现“跳跃”(第1部分末尾和第2部分开头的速度相同)的方法是使用线性.easeNoneease,这意味着没有放松或加速(在两人之间的持续时间内保持恒定速度):

但我建议您使用缓和函数及其参数,并尝试找到适合您需要的组合(Linear.easeNone有点无聊)


希望这有帮助

你应该重新考虑如何管理这些孩子。您应该将精灵的缩放比例设置为一个二者之间,然后将alpha转换划分为两个单独的二者之间。默认情况下,这在TweenLite中不起作用,因为它是Tween覆盖策略。但是,您可以通过使用
TimeLineSite
来链接您的tweens,或者向tweens添加
overwrite:OverwriteManager.NONE
属性来更改此设置。这两种解决方案有效:

使用TimeLineSite链接您的青少年:

var timeline:TimelineLite = new TimelineLite();
timeline.insert(TweenLite.to(blastwave, 0.7, {scaleX: 7, scaleY: 7}));
timeline.insert(TweenLite.to(blastwave, 0.35, {alpha: 0.5}));
timeline.insert(TweenLite.to(blastwave, 0.35, {alpha: 0, delay: 0.35}));
或者只需更改tween覆盖策略:

TweenLite.to(s, 0.75, {scaleX: 7, scaleY: 7, overwrite:OverwriteManager.NONE});
TweenLite.to(s, 0.35, {alpha: 1, overwrite:OverwriteManager.NONE});
TweenLite.to(s, 0.35, {alpha: 0, delay: 0.35, overwrite:OverwriteManager.NONE});


另一方面,如果你将你的爆炸放大0.7秒,那么整个alpha-in,alpha-out过程会缩短,比如0.55秒。那样看起来更好

哇!非常感谢您的详细回答!我会尽快试试的!:)非常非常感谢!:)我还没有使用TimeLineSite。谢谢你的提示!
TweenLite.to(s, 0.75, {scaleX: 7, scaleY: 7, overwrite:OverwriteManager.NONE});
TweenLite.to(s, 0.35, {alpha: 1, overwrite:OverwriteManager.NONE});
TweenLite.to(s, 0.35, {alpha: 0, delay: 0.35, overwrite:OverwriteManager.NONE});