iPhone SDK:长动画与“animationImages”问题(iPhone SDK: Lon

2019-09-16 10:56发布

我一直在试图建立在Xcode很长一段时间的动画现在,起初我开始尝试动画100个1000×1000 PNG图像,但这些图像太大的iPhone,现在我想要进行动画100个分辨率320x480 PNG格式,它似乎动画罚款,直到约40帧,然后应用程序崩溃,那么,有没有不会做这个动画的任何其他方法? 这可能只是因为这个代码加载太多的图像为iPhone来处理,是有一些其他的方法,我可以用它来获取应用程序停止崩溃? 或者,我可以进一步优化该代码? (顺便说我是新来的iPhone平台,回答时要记住)

- (IBAction)startClick1:(id)sender{

spud123.animationImages = [NSArray arrayWithObjects:
                          [UIImage imageNamed: @"spud1230000.png"],
                          [UIImage imageNamed: @"spud1230001.png"],
                          [UIImage imageNamed: @"spud1230002.png"],
                          [UIImage imageNamed: @"spud1230003.png"],
                          [UIImage imageNamed: @"spud1230004.png"],
                          [UIImage imageNamed: @"spud1230005.png"],
                          [UIImage imageNamed: @"spud1230006.png"],
                          [UIImage imageNamed: @"spud1230007.png"],
                          [UIImage imageNamed: @"spud1230008.png"],
                          [UIImage imageNamed: @"spud1230009.png"],
                          [UIImage imageNamed: @"spud1230010.png"],
                          [UIImage imageNamed: @"spud1230011.png"],
                          [UIImage imageNamed: @"spud1230012.png"],
                          [UIImage imageNamed: @"spud1230013.png"],
                          [UIImage imageNamed: @"spud1230014.png"],
                          [UIImage imageNamed: @"spud1230015.png"],
                          [UIImage imageNamed: @"spud1230016.png"],
                          [UIImage imageNamed: @"spud1230017.png"],
                          [UIImage imageNamed: @"spud1230018.png"],
                          [UIImage imageNamed: @"spud1230019.png"],
                          [UIImage imageNamed: @"spud1230020.png"],
                          [UIImage imageNamed: @"spud1230021.png"],
                          [UIImage imageNamed: @"spud1230022.png"],
                          [UIImage imageNamed: @"spud1230023.png"],
                          [UIImage imageNamed: @"spud1230024.png"],
                          [UIImage imageNamed: @"spud1230025.png"],
                          [UIImage imageNamed: @"spud1230026.png"],
                          [UIImage imageNamed: @"spud1230027.png"],
                          [UIImage imageNamed: @"spud1230028.png"],
                          [UIImage imageNamed: @"spud1230029.png"],
                          [UIImage imageNamed: @"spud1230030.png"],
                          [UIImage imageNamed: @"spud1230031.png"],
                          [UIImage imageNamed: @"spud1230032.png"],
                          [UIImage imageNamed: @"spud1230033.png"],
                          [UIImage imageNamed: @"spud1230034.png"],
                          [UIImage imageNamed: @"spud1230035.png"],
                          //and so on to 100
                          nil];

[spud123 setAnimationRepeatCount:1];
spud123.animationDuration =5.7;
[spud123 startAnimating];

}

PS:Iv'e试过的NSTimer,但我不能得到那个停止重复动画

Answer 1:

这是不是一个动画的问题这是一个设计问题。

首先,只是走一步CACK和计算应用程序的内存需求:解压缩后,每那些PNG格式的使用614400个字节。 所以他们百使用61440000个字节:超过60兆字节。 这是一个有点多从手机的期望。

如果你真的需要显示为每帧不同的图像,你应该使用视频。 视频有很多技术来压缩图像,并依次显示了很多大图像时减少处理和存储要求。

如果您需要这是更多的控制动画,我建议你需要分析什么是移动,只有动画效果 - 绘制一个背景,然后在动画更小的图像。

最后,如果这个方法行不通,你将不得不学习的OpenGL实现你所需要的性能。

不知道更多关于你的应用程序,它是很难的建议。



Answer 2:

您需要仔细考虑您的应用程序的内存使用,但只是让你知道的选项,我已经成功地使用了基于改进的类http://www.modejong.com/iPhone/PNGAnimatorDemo.zip其能,第一代iPad的硬件,处理15fps的全屏幕(1024×768)的动画PNG。 但是,保持你的应用程序包大小的眼睛。 这绝对不会是大多数应用的最佳选择。



Answer 3:

经常在动画中的帧非常相似。 所以,一个可能的解决方案是加载一些图片...然后使用OpenGL动画。 这非常适用,也就是说,一个球弹跳。 不知道你是什么样的动画图像。



文章来源: iPhone SDK: Long animations with “animationImages” problem