Подход для игры для Android с таймерами и обработкой сенсорных событий (перемещений) - PullRequest
0 голосов
/ 10 июля 2011

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

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

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

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

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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 10 июля 2011

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

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