我有一个包含120帧,512x512分辨率的循环动画,保存为32位PNG文件。我想在我的应用程序内部的UIView中播放这个序列。任何人都可以给我一些关于如何做到这一点的指示,希望我可以使用标准API(我更喜欢)这样做。我可以根据需要使用Cocos2D甚至是OpenGL(但我现在对OpenGL来说还是全新的)。
答案 0 :(得分:6)
你可以试试这个:
// 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];
这是最简单的方法,但我不能说出性能,因为我没有尝试过。我认为使用你拥有的图像应该没问题。
答案 1 :(得分:1)
未压缩,即大约90MB的图像,如果将它们解压缩为UIImage格式,这可能与您所看到的一样多。由于动画的长度和图像的大小,我强烈建议以压缩的电影格式存储它们。看一下MediaPlayer
框架的参考资料;您可以删除播放控件,在您自己的视图层次结构中嵌入MPMoviePlayerController
,并将播放设置为循环播放。请注意,640x480是H.264支持的上限,因此您可能需要缩小视频范围。
请注意循环视频的问题,如Smooth video looping in iOS中的问题所述。