UIImageView包含数百个全屏图像

时间:2010-11-08 21:26:27

标签: iphone objective-c uiimageview core-animation cocos2d-iphone

我有问题。我有一个UIImageView和144个全屏图像(960x640)。我有一个Timer,每秒可以将15张图像加载到UIImageView中。最后,图像像电影一样播放。一切正常,但我得到了iphone4内存警告。我只有一个数组,它保存图像的文件路径。需要显示的图像使用initWithContentsOfFile加载。

在我看来,我使用UIImageView做得最好。但正如我所说,我得到内存警告,甚至在iphone4上,它似乎有点慢。

我想更好的方法是使用cocos2d / openGL或Core Animation。但我不知道从哪里开始。它必须快速(良好的性能)并且内存占用应尽可能小。

希望有人能指出我正确的方向。

提前谢谢

2 个答案:

答案 0 :(得分:0)

这会有帮助吗?

http://appsamuck.com/day2.html

   // create the view that will execute our animation
 UIImageView* campFireView = [[UIImageView alloc] initWithFrame:self.view.frame];

 // load all the frames of our animation
 campFireView.animationImages = [NSArray arrayWithObjects:    
                             [UIImage imageNamed:@"campFire01.gif"],
                             [UIImage imageNamed:@"campFire02.gif"],
                             [UIImage imageNamed:@"campFire03.gif"],
                             [UIImage imageNamed:@"campFire04.gif"],
                             [UIImage imageNamed:@"campFire05.gif"],
                             [UIImage imageNamed:@"campFire06.gif"],
                             [UIImage imageNamed:@"campFire07.gif"],
                             [UIImage imageNamed:@"campFire08.gif"],
                             [UIImage imageNamed:@"campFire09.gif"],
                             [UIImage imageNamed:@"campFire10.gif"],
                             [UIImage imageNamed:@"campFire11.gif"],
                             [UIImage imageNamed:@"campFire12.gif"],
                             [UIImage imageNamed:@"campFire13.gif"],
                             [UIImage imageNamed:@"campFire14.gif"],
                             [UIImage imageNamed:@"campFire15.gif"],
                             [UIImage imageNamed:@"campFire16.gif"],
                             [UIImage imageNamed:@"campFire17.gif"], nil];

 // all frames will execute in 1.75 seconds
 campFireView.animationDuration = 1.75;
 // repeat the annimation forever
 campFireView.animationRepeatCount = 0;
 // start animating
 [campFireView startAnimating];
 // add the animation view to the main window 
 [self.view addSubview:campFireView];

答案 1 :(得分:0)

您可能希望在此处查看:best way to load an image library of iphone nsmutablearray (600+ items)

我前段时间做了一些测试,以完成与你正在做的事情类似的事情。