Как анимировать изображения с помощью растровых изображений / данных RGB в iOS - PullRequest
0 голосов
/ 22 января 2012

Я программирую игру на своем iPhone, и у меня есть изображение, которое я хочу оживить, скажем, ходячий человек в растровом изображении.Растровое изображение меняется со временем.Как эффективно добавить растровые изображения на экран / UIView?

Ответы [ 2 ]

3 голосов
/ 22 января 2012

Самый эффективный способ загрузки последовательности изображений - использовать изображения в формате PVR и загружать их в качестве текстур OpenGL. Изображения PVR поддерживают различные форматы, включая необработанные 32-битные данные RGB.

Я обернул эту функцию в библиотеку, которая дает вам GLImageView и позволяет вам указать список имен файлов, которые он будет эффективно передавать в память и воспроизводить в последовательности:

https://github.com/nicklockwood/GLView

Проверьте прилагаемый пример и посмотрите, будет ли он работать для ваших нужд. В документацию включены инструкции по созданию изображений в нужном формате и т. Д.

1 голос
/ 22 января 2012

Вы можете сделать это с помощью CAKeyframeAnimation.

Я только написал это и не проверял - но должен привести вас на правильный путь.Загрузите все ваши кадры в NSArray, затем установите «значения» анимации в массив кадров.

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"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...