Подход для Android игры с таймерами и обработкой сенсорных событий (ходов)

Я делаю игру с игровым циклом и активным рендерингом (используя SurfaceView и SurfaceHolder.Callback).

Мне интересно, как заставить это работать вместе с синхронизированными событиями и сенсорным управлением событиями. Приуроченные события похожи на то, что каждые xx мс что-то происходит, каждые yy ms происходит что-то свое. Сенсорное управление - это обновление игры и экрана при спуске, подъеме и движении.

Я сделал несколько попыток, но это выглядит как-то неуклюже, да и игра работает не очень хорошо ...

С одной стороны, у меня классический игровой цикл (в отдельном потоке): во время обновления, рендеринг, рисование, сон немного

Теперь я не очень хорошо знал, как заставить это работать с циклами таймера. Я использовал подход обработчика - создавайте классы, которые расширяют обработчик, делают то, что они должны делать в handleMessage, а затем вызывают себя с помощью sendMessageDelayed.

Они просто обновляют состояние игры. Рендеринг полученных изменений будет производиться в gameLoop.

Этот подход требует синхронизации, чтобы обновление игрового цикла не мешало обновлению таймеров.

И - помимо этого мне нужно обрабатывать события касания - вниз, вверх и движение! Мой подход здесь, как и в таймерах, заключался в том, чтобы просто обновлять состояние игры и оставлять его на усмотрение цикла для правильной обработки и отображения.

Я не знаю, возможно, я нахожусь на совершенно неправильном пути, нуб к Андроду, и сделал это так, как я думал, «может сработать».

Например, я не уверен, нужно ли делать игровой цикл в отдельном потоке. Я думал, что это так, чтобы показать результаты обработки касания (перемещения) в соответствии с определенной частотой кадров.

С другой стороны, я мог бы выйти из цикла и просто сказать рисовать после каждого обновления таймера и после каждой обработки касания, но это тоже не работает.

Вопрос в том, каков общий подход к такого рода играм? (синхронизированные циклы / событие касания (перемещение), которое должно постоянно отображаться на экране).

Заранее спасибо.


person Peter    schedule 10.07.2011    source источник


Ответы (1)


Вы читали Использование конвейеров ввода в вашей игре для Android? Он представляет собой решение вашей проблемы с обработкой ввода.

person Vincent Mimoun-Prat    schedule 10.07.2011