2010-12-21 58 views
0

只需要在iphone上請求一些動畫圖像的建議。我正在構建一個由5個動畫角色組成的應用程序。iPhone使用UIImageView的大量動畫的最佳做法

每個動畫由大約50幅平均持續時間爲3秒的圖像組成。

我打算爲每個動畫創建一個圖像數組,將這些數據作爲UIImageView的源代碼,並根據需要切換這些圖像。但正如你可以猜測這種方法殺死了我的iPhone的內存,從而殺死了應用程序。 (250張圖片,每張130K!)

所以這讓我想知道其他人怎麼解決這個問題?也許把動畫改成電影?

感謝您的任何建議。

回答

1

我推薦這部電影的路線,如果你能擺脫它。它會更乾淨,可能更高性能。

但是,如果你堅持的圖像出於某種原因,這裏的陸續從裝載5000個全幀圖像性能:

[UIImage imageWithData:...] // 44.8 seconds 

[UIImage imageWithContentsOfFile:...] // 52.3 seconds 

[[UIImage alloc] initWithContentsOfFile:…] // 351.8 seconds 

[UIImage imageNamed:...] // hung due to caching 
+0

感謝Josh的詳細答案!看起來像[uiimage imageWithData :]可能是贏家,雖然我想看看下面Hivebrain建議的cocos2d spriteAtlas。 – bennythemink 2010-12-21 14:27:33

0

您是否嘗試過使用代表幀的UIImages數組在UIImageView上設置animationImages屬性。過去我已經完成了這個工作,它工作得很好,但我的動畫中沒有像你那麼多的圖像。

如果圖片中的數據太多,您可能需要做一些更復雜的事情,比如精靈圖集。該方法將一串幀組合爲一個圖像,然後通過更改大圖像的可視部分來動畫化幀。這樣一來,整個事件就會加載,而動畫只會改變用戶看到的圖像部分。 Cocos2D有許多圍繞精靈動畫的功能。如果animationImages不起作用,您可能想嘗試一下。

--Mike

+0

嘿Hivebrain,是的,我是用與[UIImage的imageNamed的animationImages屬性: ]。這導致我的應用程序崩潰:(我將看看cocos2d,看看spriteAtlas是否優於使用[UIImage imageWithData]的動畫圖像,如上面的Josh建議的。 – bennythemink 2010-12-21 14:26:03