如何在iOS中使用bitmaps / rgb数据为图像添加动画效果

时间:2012-01-22 07:19:09

标签: iphone objective-c ios

我正在我的iPhone上编写一个游戏,我有一个想要制作动画的图像,比如一个位图中的行走者。位图随时间而变化。如何有效地将位图添加到屏幕/ UIView?

2 个答案:

答案 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"];
相关问题