IOS — как осуществить игровую анимацию на заднем фоне?

Доброе время суток! Перед мною поставили задачу реализовать игру, если реализация игры вопросов не вызывает, то анимация в игре - это сплошной вопрос для меня. Собственно, задача: во время игры, на заднем фоне проиграть анимацию длительностью 16 секунд, каким образом это можно сделать? Какой формат анимации должен быть? Что вообще нужно для игровой анимации в iOS?

До этого времени анимацией не занимался вообще, проще говоря, не понимаю, что вообще нужно сделать для того, что бы её внедрить. За помощь буду очень благодарен.
  • Вопрос задан
  • 2901 просмотр
Решения вопроса 1
morozovdenis
@morozovdenis
навскинду два варианта сразу приходят на ум:

1. реализовать свою view которая будет отображать список картинок по очереди и при этом не сразу загружать их все, а нужные подгружать когда нужно, а просмотренные выгружать из памяти

2. собрать это в видос и запустить его на заднем плане

я сделал бы первый вариант, он гибче. в первом варианте ничего не надо дополнительно собирать если кол-во кадров и/или сами кадры изменятся

//как-то так должен выглядеть MyImagesView.m файл

@interface MyImagesView ()

@property (nonatomic, strong) UIImageView *imageView;

@property (nonatomic, assign) int currentImage;
@property (nonatomic, assign) int totalImages;

@end

@implementation

/*
 * этот метод надо вызывать в таймере. обязательно в Main Thread
 */
- (void)showNextImage
{
	assert([NSThread isMainThread] == YES);
	
	self.currentImage ++;
	if (self.currentImage == self.totalImages)
	{
		// что бы отображать картинки циклически
		self.currentImage = 0;
	}
	
	UIImageView *newImageView = [[UIImageView alloc] initWithFrame:self.bounds];
	newImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image_name%i.png", self.currentImage]];
	
	[self.imageView removeFromSuperview]; // убираем прирыдущий кадр из view-хи (затираем сильную ссылку номер 1)
	self.imageView = nil; // убираем сильную ссылку номер два (тут UIImageView должна выгрузиться из памяти, а с ней и UIImage)
	
	[self addSubview:newImageView]; // закидываем новый кадр во view-ху (создаём сильную ссылку номер 1)
	self.imageView = newImageView; // сохраняем ссылку на новый кадр что бы иметь в следующем вызове метода showNextImage ссылку на предыдущий кадр  (создаём сильную ссылку номер 2)
}

@end


UPD:
попробуйте заменить:
newImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image_name%i.png", self.currentImage]];
на:
NSString *imageName = [NSString stringWithFormat:@"image_name%i", self.currentImage];
newImageView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]];
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kocherovets
Поищите какую-нибудь реализацию покадровой анимации на UIKit, если вас именно рисованная анимация интересует.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы