2013-10-19 73 views
1

我想在特定的時間點對3幅不同的圖像進行動畫處理,使其表現如此。使用CAKeyframeAnimation交錯動畫?

1) 1st image moves from (Xx, Yx) to (Xz,Yz) 
2) Wait 10 seconds 
3) 2nd image appears in place at Xa,Yb 
4) Wait half as long as in step 2 
5) Fade out 2nd image 
6) 3rd image appears at the same place as 2nd image 

如果這些圖像的每個動畫都在它們自己的CALayers上,我可以在多個圖層上使用CAKeyframeAnimation嗎?如果不是,那麼交錯動畫的另一種方式是什麼?

我試圖讓一張撲克牌從屏幕外移動到一個特定的位置,然後幾秒鐘後出現在屏幕上的其他幾個技巧。

回答

3

不,您不能使用關鍵幀動畫來動畫多個圖層。給定的CAAnimation只能作用於單個圖層。順便說一句,這包括組圖層。

如果你正在做的是像直線移動圖像,淡出和淡入淡出,你爲什麼不使用UIView動畫?看一下名字以animateWithDuration開頭的方法:動畫:這些方法可以讓你同時創建多個動畫,然後完成塊可以觸發額外的動畫。

如果你需要使用層動畫出於某種原因,你可以(因爲它們符合CAMediaTiming協議,CAAnimation對象有。)使用BEGINTIME屬性對於不是動畫組的一部分CAAnimations,您使用

animation.beginTime = CACurrentMediaTime() + delay; 

其中延遲是表示以秒爲單位的延遲的雙倍。

如果延遲爲0,則動畫將開始。

第三種選擇是將視圖控制器設置爲動畫委託並使用animationDidStop:finished:方法鏈接動畫。在我看來,這最終是實現最麻煩的方法。

+0

我想在發生旋轉時停止動畫,這就是爲什麼我沒有看UIView動畫方法。 –

+0

然後,我可以使用具有多個圖層的CAAnimationGroup,每個圖層都有一個animationGroup? –

+0

單個CAAnimation對象只能動畫一個圖層。這包括它包含的任何CAAnimationGroups。您可以提交在動畫不同圖層的同時運行的多個動畫。 –

相關問題