Простая игра UIKit: что является хорошим подходом для многократного вывода новых объектов на экран? - PullRequest
1 голос
/ 29 июня 2011

В настоящее время я создаю простую игру, используя чистый UIKit. В моем игровом контенте MVC у меня есть объект таймера CADisplayLink, который активируется в игре и неоднократно вызывает метод gameLogic для отображения новых объектов. Метод рассчитывает и обновляет позиции объекта на экране. FrameInterval моих таймеров составляет 2 кадра. Теперь мне нужно как-то установить интервал для повторного появления новых объектов на экране. Решение, которое я использовал до сих пор, заключается в использовании статического счетчика в методе gameLogic. Вот фрагмент метода:

-(void)gameLogic{
  static int timeCounter = 0;
  if ((timeCounter % 50)==0){ 
    [self addItemToScreen];
  }
  ...
  timeCounter++;

При каждом 50-м цикле выполнения метода gameLogic я помещаю новый объект на экран. Остальной код метода gameLogic перемещает существующие объекты. В настоящее время все управляется только одним таймером. Другое решение, которое должно работать IMHO, - это наличие отдельного таймера для добавления новых объектов на экран. Но я не уверен, что это лучшее решение, и будут ли они успешно работать одновременно. Что вы думаете об этих подходах? Какие еще решения вы предлагаете использовать?

1 Ответ

1 голос
/ 29 июня 2011

Я думаю, хорошо, чтобы все ваши объекты реагировали на счетчик кадров. Тем не менее, я бы скорее вместо этого отправил уведомление по вашему приложению, вместо того, чтобы иметь одну функцию, содержащую тонну кода, которая делает все что угодно. Я думаю, вам действительно следует рассмотреть возможность разбиения всей этой логики на отдельные классы, то есть класс GameObjectCreator, который отвечает на уведомление, отправленное при срабатывании вашего таймера, и только этот класс добавляет объекты в представление. Для вашего кода, который переупорядочивает объекты на экране, они также могут отвечать на одно и то же уведомление и могут обрабатываться родительским контроллером для управления всеми объектами, или каждый отдельный объект может также отвечать на уведомление. С точки зрения производительности, я не уверен, что использование уведомлений - это плохо, когда много объектов отвечают сразу, но что-то вроде этого - больше подход, который я бы использовал, чтобы у вас не было всего этого спагетти-кода в одной функции таймера. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...