2012-12-11 44 views
0

我有一個png圖像列表,我希望它們一個接一個地顯示動畫。在我的大多數情況下,我使用帶有動畫圖像的UIImageView,它工作正常。但在一些情況下,我的PNG是100幀以上的1280 * 768(全屏iPad)動畫。我發現在模擬器上使用UIImageView非常緩慢(第一次加載時間太長),我相信如果將它放在設備上,速度會更慢。在iOS中更快的替代UIImageView

有沒有別的方法可以很順利地顯示圖像序列?也許核心動畫?有沒有我能看到的工作例子?

回答

4

核心動畫可用於基於矢量/關鍵幀的動畫 - 而不是圖像序列。在iPad上加載超過一百個全屏PNG是一個不錯的主意,如果不是直接終止,你幾乎肯定會得到一個內存警告。

您應該使用視頻來顯示這些類型的動畫。性能會好很多。你有什麼理由不能爲你的動畫使用H.264視頻?

+0

lxt是正確的。如果你有超過100幀的全屏動畫圖像排序不是正確的方法。你應該尋找視頻或將其分解成實際的精靈並用代碼動畫他們的動作。 –

+0

我希望這些動畫在其中大部分都具有透明度的alpha通道。 H.264視頻會提供透明度嗎? – Panos

+0

否 - 如果你需要alpha,你可能需要找到一個替代方法(可能使用關鍵幀或路徑爲單個對象設置動畫)。正如Minthos所建議的那樣,您可以嘗試使用OpenGL,但擁有超過1024像素的紋理,這可能不是一個可行的解決方案。 – lxt

3

製作您的照片視頻。這是最簡單也可能是最合理的方法。

如果你想要非常好的性能和完全控制你的動畫,你可以將圖片轉換爲pvrtc4格式,並使用OpenGL將它們作爲廣告牌(紋理小圖)進行繪製。如果你不知道如何去做,這可能是很多工作。

+0

視頻支持透明度的alpha通道?就像現在一樣,這些圖像在某些地方具有透明度,以允許其下的其他組件可見並可觸摸。視頻是否會提供此功能? – Panos

+0

你可以試着理解這個:http://stackoverflow.com/questions/1401517/iphone-sdk-how-to-play-a-video-with-transparency – Minthos

0

再看第二個例子

http://www.modejong.com/iPhone/

http://www.modejong.com/iPhone/

也有UIImageView.animationImages API提取物,但使用多了一個時,它迅速地吸收了所有的系統內存幾個體面大小的圖像。

我想要顯示一個持續2秒的全屏幕動畫,速度爲15 FPS,這是總共30張尺寸爲480x320的PNG圖像。此示例實現了一個面向動畫的視圖控制器,它只需等待讀取幀的PNG圖像數據,直到需要爲止。

這個類不是全部配置了很多兆字節,而是運行在大約半兆的內存上,第二代iPhone的CPU利用率約爲5-10%。此示例也已更新,包括在顯示動畫時可選擇通過AVAudioPlayer播放音頻文件的功能。