我正在我的iPhone上编写一个游戏,我有一个想要制作动画的图像,比如一个位图中的行走者。位图随时间而变化。如何有效地将位图添加到屏幕/ UIView?
答案 0 :(得分:3)
加载图像序列的最有效方法是使用PVR格式图像并将其加载为OpenGL纹理。 PVR图像支持多种格式,包括原始32位RGB数据。
我已经在一个库中包含了这个功能,它为您提供了一个GLImageView,并允许您指定一个文件列表,它将有效地流入内存并按顺序播放:
https://github.com/nicklockwood/GLView
查看附带的示例,看看它是否适合您的需求。该文档包含以正确格式创建图像的说明等。
答案 1 :(得分:1)
您可以使用CAKeyframeAnimation执行此操作。
我刚刚写了这篇并没有对它进行测试 - 但应该让你走上正确的道路。将所有帧加载到NSArray中,然后将动画的“值”设置为frames数组。
NSArray *walkFrames = [[NSArray arrayWithObjects:
[UIImage imageNamed:@"walk.00000.png"],
[UIImage imageNamed:@"walk.00001.png"],
[UIImage imageNamed:@"walk.00002.png"],
[UIImage imageNamed:@"walk.00003.png"],
[UIImage imageNamed:@"walk.00004.png"],
[UIImage imageNamed:@"walk.00005.png"],
[UIImage imageNamed:@"walk.00006.png"],
[UIImage imageNamed:@"walk.00007.png"],
[UIImage imageNamed:@"walk.00008.png"],
[UIImage imageNamed:@"walk.00009.png"],
nil] retain];
CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
anim.keyPath = @"contents";
anim.duration = 2.f;
anim.values = walkFrames;
anim.calculationMode = kCAAnimationLinear;
anim.repeatCount = HUGE_VAL;
[myView addAnimation:anim forKey:@"myFlipAnimation"];