2011-10-27 51 views
0

我有一個矢量圓和如何做到以下幾點:與TweenLite的平穩過渡,不工作

我想,所以它看起來像爆炸的衝擊波與TweenLite的動畫吧。起初,它會淡入(從0到0.5)並縮放,當它達到總動畫時間的一半時,它會淡出,但仍然會縮放(希望你知道我的意思)。

目前,它看起來可怕,因爲我不知道怎麼去從第1部分平滑過渡到零件2 TweenLite的。達到第1部分結束時,我的動畫停止,突然讓跳轉到第2部分

有人可以幫我解決這個問題嗎?非常感謝你:)

動畫的總時間:0.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]}); 

} 

回答

1

TweenLite的適用緩動函數補間過渡到控制的變化率和默認便於是Quad.EaseOut(這意味着在將吐溫減速變化率,因爲它利用二次函數接近的端部)。這就是爲什麼你看到這樣的突然變化(或「跳」),因爲在兩個tweenings的「連接點」(或部件,因爲你給他們打電話),變化的速度是相當不同:第一個漸變是在其最慢的速度,因爲它已經到了最後,而另一個速度最快,因爲它剛剛開始。

恐怕唯一能確保沒有「跳躍」的方法(在第1部分結束和第2部分開始時速率將是相同的)將是使用線性的。 easeNone放心,這(通過補間的持續時間恆定速率)意味着沒有寬鬆或加速:

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

//part 2 (put inside function) 
TweenLite.to(object, time, {ease:Linear.easeNone, alpha:0, transformAroundCenter:{scale:scaleVal}, 
onComplete:backgroundSprite.removeChild, onCompleteParams:[object]}); 

但我建議你玩的緩動函數及其參數,並試圖找到一個組合適合您的需求(Linear.easeNone有點無聊)。

希望這會有所幫助!

+0

哇!非常感謝您的詳細解答!我會盡快嘗試!:) – drpelz

1

你應該反思一下,如何管理那些充斥。您應該將精靈的縮放比例設置爲一個補間,然後將阿爾法過渡分成兩個單獨的補間。默認情況下,這在TweenLite中不起作用,因爲它是Tween覆蓋策略。但是,您可以通過使用TimelineLite到鏈中的補間改變這一狀況,或overwrite:OverwriteManager.NONE屬性添加到您的補間。這兩種解決方案的工作:

使用TimelineLite到鏈中的補間:

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})); 

或者只是改變吐溫覆蓋策略:

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}); 

About TweenLite's OverwriteManager and tween overwriting.

在一個側面說明,如果你縮放爆炸0.7秒,使整個alpha進入,alpha進程縮短,如0.55秒。看起來更好的方式。 :]

+0

非常非常感謝!:)我還沒有使用TimeLineLite。感謝那偉大的提示! – drpelz