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, если вас именно рисованная анимация интересует.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Искра Екатеринбург
от 80 000 до 100 000 ₽
Art gorka Санкт-Петербург
от 60 000 ₽
от 40 000 до 60 000 ₽
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект