2009-06-17 90 views
4

我爲Leopard構建了一個利用核心動畫的屏幕保護程序。它沒有做任何過於複雜的事情;使用CALayers和CATextLayers的樹,以產生數據的「表」中的結構如下:在屏幕保護程序中的生澀/ juttery(核心)動畫?

- root 
    › maincontainer 
    › subcontainer 
     › row [multiple] 
     › cell [multiple] 
      › text layer 

在最有在任何一個時刻在屏幕上呈現50個CALayers。

一旦我建立了「表格」,我將使用CABasicAnimation將「subcontainer」動畫添加到視圖中。再一次,我沒有做任何事情 - 只是一個簡單的淡入。

問題是,雖然動畫確實發生了痛苦的觀看。在我的開發機器上,這是一款帶有4GB內存的3.06Ghz iMac,它似乎將動畫分成10個步驟,而不是逐步改變。

它在屏幕保護程序所針對的ppc mac-mini上變得更糟;它甚至拒絕播放動畫,通常從動畫開始(0%不透明度)到中途(50%)然後完成「補間」。

我對ObjectiveC相對比較陌生,我的經驗基於使用垃圾收集環境,但我無法相信我在屏幕保護程序開始導致此類問題時泄漏了足夠的內存。

此外,我很確定它沒有硬件問題。我已經測試了使用核心動畫的內置屏幕保護程序,並下載了一些免費的基於CA的對比,並且它們在兩臺機器上運行都沒有問題。

Google上的信息非常簡單,關於在屏保中使用CA或在一般情況下使用CA,關於分析/煩人屏保的建議/教程似乎並不存在。所以社區可以提供的任何幫助都會受到歡迎!

--- UPDATE ---

彷彿隱式動畫幫出來打圓場了一點。仍然有點生澀,但不像嘗試使用我的解決方案中的明確動畫製作動畫一樣糟糕。

回答

1

屏幕保護程序沒有太多特別之處。我假設你已經開始使用Core Animation Programming Guide?通過樂器運行它會給你很多關於你花費太多時間的信息。

你用來做淡入的代碼會很有用。對於你所描述的,你甚至不需要CABasicAnimation;你可以設置圖層的動畫屬性,默認爲動畫。確保你已閱讀Implicit Animations。該頁面的其餘部分可能也有用。

CoreAnimation中的大部分工作已經開始。我一般都知道它在做什麼,而大部分問題都來自於猜測它試圖告訴它太多。

相關問題