2013-01-22 51 views
1

我正在使用Core Animation來動畫一些圖層,其中一些將用於顯示視頻。在Core Animation中,我如何獲得圖層框架和旋轉?

我聽說使用多個圖層播放多個電影不是一個好主意(效率低下)。經過一些搜索後,我找到了一種用視頻幀創建Open GL紋理的方法。所以我想訪問圖層屬性以使用紋理(OpenGL)使用紋理來顯示它們(避免爲每個紋理使用多個具有OpenGL上下文的CAOpenGLLayer)。

我已經劃分了CALayer在setFrame上放置斷點:但每次值改變時它都不會中斷。如何在動畫期間確定CALayer的框架?

PS:我使用CARenderer,因爲我必須通過混合所有圖層來創建幀,而不是實時。

回答

1

你的問題似乎歸結爲這樣:

如何訪問層中間的動畫幀/轉型?

答案是你必須撥打-presentationLayer你的CALayer。這會返回另一個CALayer,其屬性反映了正在進行的動畫的當前值。但請注意,這隻會返回當前顯示圖層的近似值。我很確定它基本上是重新計算給定當前時間的動畫值,而不是使用最後一次屏幕更新時的值。只要你的幀率很高,它應該相當接近。

在任何情況下,您都無法在此更改時收到通知。但你可以做的是每次需要渲染一個新的幀時檢查-presentationLayer。或者,運行CADisplayLink並在每次觸發時檢查-presentationLayer

但是和往常一樣,你應該做性能分析。我不知道計算-presentationLayer的成本是多少。

相關問題