2010-11-19 137 views
0

我想這個問題真的是關於性能,但我也試圖得到一個粗略的理智檢查。iPhone:矢量動畫

我顯示地圖視圖(雖然它是地圖視圖還是別的東西可能會改變,我希望是不重要的),並且在地圖視圖的頂部我有一個透明的視圖子類。在這個視圖的drawRect:方法中,我使用核心圖形調用來繪製視圖;圓圈,漸變等等。我畫的並不是非常複雜,但並不是微不足道的。然後,我有一個NSTimer,每X秒觸發一次,每次調用[myview setNeedsDisplay],以及它在每個時間步驟(圓圈變大,顏色和梯度變化等)發生變化。

這是要做這種基於矢量的動畫類型的正確方法嗎?我得到的性能非常低,X似乎沒有比0.25好。我想要0.05或更小。有沒有其他的方式來做事情?我覺得我要麼戰略性地離開,要麼這是徒勞的。我可以用CoreAnimation做些事情 - 比如增長和縮小圖片等等,而且速度非常快(爲什麼?),但它不能給我我想要的控制...

更多信息:減少繪圖複雜性更少的圓圈,漸變,等等)確實加快了繪畫的速度,但我必須畫幾乎沒有任何東西來獲得流暢的動畫。這種NSTimer戰略是否正確?有沒有其他的方法來做動畫矢量繪圖?

+0

這將會是人們想讀你的問題,如果你正確地格式化代碼有幫助(以這種情況下,通過反向包圍它)。請參閱http://daringfireball.net/projects/markdown/syntax。 – 2010-11-19 21:18:50

+0

可能的[優化核心圖形動畫(iPhone)]的副本](http://stackoverflow.com/questions/3310883/optimize-core-graphics-animated-drawing-iphone) – 2010-11-21 16:02:38

+0

哦,甜蜜,那個鏈接真的很有幫助。謝謝! – Colin 2010-11-21 18:46:24

回答

0

是否有可能利用一些Core Animation來執行一些/所有的動畫?例如,不是重繪一個尺寸變化的圓,而只是將其渲染爲一個尺寸並對其進行動畫變換?如果您只有幾個對象動畫,可以嘗試將每個對象添加爲視圖的子圖層,然後將一些Core Animation動畫組合在一起,而不是嘗試手動重繪所有內容。如果您查看Apple地圖應用程序中的藍色圓圈,當它們向外輻射(同時獲得修復)時,可以看到它們開始變得銳利並隨着增長變得模糊。它適用於此目的,我懷疑它們只是縮放一個小圓形圖像。這種事情適用於你的應用程序?

很難說什麼可以提高性能,而無需更好地瞭解您正在執行的動畫。這是你可以詳細說明的嗎?

(我會發布這是一個評論,我只是很害羞的,所需的聲譽)

+0

所以,不幸的是,我認爲這是正確的答案。我做到了 - 放棄了東西,然後用CoreAnimation進行動畫製作。我可以把它做到我想要的大部分,而且非常順利。我說不幸,因爲它看起來應該是一種做矢量動畫的方法。好吧。 – Colin 2010-11-20 16:56:37