我有一個由120幀,512x512分辨率,保存爲32位PNG文件組成的循環動畫。我想在我的應用程序內的UIView中播放這個序列。任何人都可以給我一些關於如何做到這一點的指針,希望我可以使用標準API(我更喜歡)來做到這一點。如果需要的話,我可以使用Cocos2D,甚至可以使用OpenGL(但在這一點上我完全是OpenGL的新手)。在UIView中播放循環圖像序列
回答
你可以試試這個:
// Init an UIImageView
UIImageView *imageView = [[UIImageView alloc] initWithFrame:/*Some frame*/];
// Init an array with UIImage objects
NSArray *array = [NSArray arrayWithObjects: [UIImage imageNamed:@"image1.png"], [UIImage imageNamed:@"image2.png"], .. ,nil];
// Set the UIImage's animationImages property
imageView.animationImages = array;
// Set the time interval
imageView.animationDuration = /* Number of images x 1/30 gets you 30FPS */;
// Set repeat count
imageView.animationRepeatCount = 0; /* 0 means infinite */
// Start animating
[imageView startAnimating];
// Add as subview
[self.view addSubview:imageView];
這是最簡單的方法,但我不能說表現什麼,因爲我還沒有嘗試過。我認爲它應該沒問題,儘管你有圖像。
我想你會用盡內存來嘗試創建圖像數組。 – picciano 2012-02-17 18:02:14
出於好奇,我做了一個小項目。我使用了120個PNG,每個都是512x512像素,大小約790KB,總共95MB。花了一些時間來加載,但後來運行得很好。嘗試在4.3模擬器,5.0模擬器和iPhone 4S上。模擬器甚至沒有顯示內存警告。 – iska 2012-02-17 19:13:48
(例如)一個相對無負擔的4S的測試並不比較臃腫的4;我的幾個客戶的內存問題比以往任何時候都要糟糕。在提交這樣的解決方案之前,我建議在您的最低目標設備上嘗試此操作;例如,3G手機和2G觸摸,只有128MB內存,即使對於較新設備(3GS手機,4G觸摸)中的256MB,也要消耗大約95MB。 – AndrewS 2012-02-17 20:09:44
未壓縮,大約90MB的圖像,如果將它們解壓縮爲UIImage格式,可能與您正在查看的內容相同。由於動畫的長度和圖像的大小,我強烈建議將它們以壓縮的電影格式進行存儲。查看MediaPlayer
框架的參考資料;您可以刪除播放控件,在您自己的視圖層次結構中嵌入MPMoviePlayerController
,並將播放設置爲循環。請注意,640x480是H.264支持的上限,所以您可能需要縮小視頻。
請記住循環播放視頻的問題,如Smooth video looping in iOS中提到的問題。
- 1. Javascript循環播放圖像
- 2. 如何在循環播放圖像序列,反序
- 3. 在Java中循環播放MIDI序列
- 4. 循環播放器行中的圖像在循環後消失
- 5. iOS:循環播放圖像的像素
- 6. 使用JQuery循環播放圖像
- 7. 在MATLAB中播放圖像序列
- 8. 在Canvas中播放圖像序列
- 9. 在球拍中循環播放列表
- 10. 循環播放時間序列對象
- 11. 在Javascript中循環播放Photoshop圖層
- 12. Playframework:循環播放列表
- 13. 在Flash中循環播放
- 14. 意圖循環播放
- 15. 在循環播放時播放mp3
- 16. 播放與循環
- 17. 循環播放NSArray
- 18. 循環播放csv
- 19. 在UIView中播放視頻(子視圖)
- 20. PNG圖像序列播放問題
- 21. 圖像序列播放一次停止
- 22. 使用Qt播放圖像序列QMainWindow
- 23. 播放/循環播放視頻
- 24. c#SoundPlayer播放列表循環
- 25. Itertools Groupby循環播放不同列
- 26. 循環播放並添加到陣列
- 27. 循環播放列表?使用Asp.net?
- 28. 循環播放boxlot(數據幀列)
- 29. 在循環播放聲音序列時的用戶輸入[matlab]
- 30. Javascript以循環間隔循環播放
將其轉換爲視頻,然後播放該視頻。 – 2012-02-17 15:26:47