Мы работаем над парой простых игр, и у нас есть некоторые проблемы с производительностью, с которыми мы постоянно сталкиваемся, и мне было любопытно, была ли это проблема кода или проблема «мы используем неправильные объекты».
Наши игры в основном простые и работают следующим образом:
У нас есть пользовательское представление, которое мы загружаем, и пользовательский объект, который является нашим игровым движком. В представлении есть таймер, который срабатывает так:
[NSTimer scheduledTimerWithTimeInterval:1.0 / 30.0 target:self selector:@selector(animationTimerMethod) userinfo:nil repeats:YES];
и в нашем методе таймера мы имеем следующее:
- (void)animationTimerMethod:(NSTimer*)timer
{
if([gameEngine doGameLoop]) //only redraw if we need to
[self setNeedsDisplay];
}
Наш код рисования очень прост, мы просто рисуем пару изображений на экране, используя код, подобный следующему:
- (void)drawRect:(CGRect)rect
{
CGGraphicsContext ctx = UIGraphicsGetCurrentContext();
CGContextDrawImage(ctx, someRect, someImage);
}
Основная проблема, с которой мы сталкиваемся, - это реагирование на прикосновения. Наш код не получит ответ в методе touchesBegan много раз. Это просто ограничение библиотеки Core Graphics? Должны ли мы использовать OpenGL? Существуют ли другие способы создания простых анимаций (даже не движущихся по экрану объектов, всего 6 или около того кадров анимации для объекта в том же месте), которые были бы более отзывчивыми?
Большое спасибо!