Как структурировать простые приложения для Android - PullRequest
3 голосов
/ 31 августа 2010

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

  • Традиционный метод - это нечто как организация проекта в MVC, где я имею основную деятельность класс загрузить представление OpenGL и класс обработки датчика и будет затем возможно зарегистрировать несколько обратных вызовов или возможно сделать это на часах.
  • Неаккуратная альтернатива имеет один класс, который реализует GLSurfaceView и SensorEventListener и затем выгружает логику в другие классы.

Предположим, что очень простой код для рисования и несколько сложный код системы управления, которые будут пытаться обновляться с частотой 60 Гц. Я ищу производительность, удобство обслуживания и простоту разработки, поэтому любой вклад важен. Кроме того, я новичок, когда дело доходит до разработки под Android или для мобильных устройств, так что если вы покажете мне свет с третьей альтернативой, это тоже было бы здорово.

1 Ответ

1 голос
/ 01 сентября 2010

Иногда излишнее планирование может быть пустой тратой времени.

В разных играх используются разные подходы, вы захотите взглянуть на блог разработчика на острове-реплике и код для различных советов о том, как организовать ваш код с помощью GLSurfaceView. http://replicaisland.net/

Я использую ваш последний подход, но он не такой небрежный, как вам кажется. Вам на самом деле не нужен никакой логический код в GLSurfaceView, просто вызовы ваших классов, когда происходят определенные события. (onDraw, onTouch, onKey и т. д.)

Не уверен, что в этом плохого, я придерживаюсь своей логики в их соответствующих классах. Например, в моем onDrawFrame () я просто делаю MyAreaManager.draw (gl)

Класс MyAreaManager будет поддерживать свою собственную логику и знать, что рисовать.

Что касается часов, вам, скорее всего, понадобятся два потока. Один для рендеринга (поток GLSurfaceView) и один для игровой логики, которая работает с определенной частотой кадров логики.

Логическая рамка просто изменила бы состояние объектов холста, а рамка рисования просто нарисовала бы их как можно быстрее.

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

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