2013-03-11 32 views
1

我目前的目標是在我的iOS應用程序中爲圖片繪製動畫,以便用戶可以在他們的屏幕上看到類似http://www.youtube.com/watch?v=xlDmk5WdaHk的東西。使用CAKeyFrameAnimation進行時間繪畫的高效動畫

我的繪畫加速因時間而異,所以我用CAKeyFrameAnimationkeyTimes構建了我的動畫。此刻,我只有一條Bezier路徑指定了我的繪圖中的所有點,我將路徑添加到我的CAShapeLayer對象中,然後在開始動畫時將路徑傳遞給我的動畫對象。

我的問題:完成立即繪製出現在屏幕上,和我的筆光標然後根據我的keyTimes值沿所述畫面移動,而不必在串聯筆劃顏色填充與我的筆光標移動在屏幕上,以產生與視頻相同的效果。

我注意到了這個問題SO,其中所述建議的解決方案是產生用於動畫的每個點單獨的路徑:How to Animate CoreGraphics Drawing of Shape Using CAKeyframeAnimation

考慮到我有100-300的各個點,是否有生產的更有效的方法時變圖中,比創建幾百路徑與所述路徑以這種形式的陣列(具有幾百值中的每個路徑):

path0 = point0...point0...point0...point0... 
path1 = point0...point1...point1...point1... 
path2 = point0...point1...point2...point2... 
path3 = point0...point1...point2...point3... 

然後以路徑數組,並向它傳遞到myAnimation.values並用我的動畫?或者,這真的是最好的方式去做這件事?

在此先感謝

回答

1

肯定有一種更有效的方式,如果你的觀點是貝塞爾路徑上。 CAShapeLayer有兩個名爲strokeStart和strokeEnd的小屬性。如果您最初將strokeEnd設置爲零,那麼您的路徑將不會顯示。在1.0時它會完全顯示。將值從零增加到1將相應地跟蹤曲線。這是一個動畫屬性,可以將其值與其他動畫的關鍵時間同步,並且隨着「筆」移動,圖形將顯示。

相關問題