Я играю в игру с игровым циклом и активным рендерингом (используя SurfaceView и SurfaceHolder.Callback).
Мне интересно, как это сделать вместе с синхронизированными событиями и сенсорным управлением событиями.Временные события похожи на то, что каждый xx ms что-то происходит, каждый yy ms происходит что-то другое.Сенсорное управление - это обновление игры и экрана, когда вниз, вверх и двигается.
Я сделал несколько попыток, но это выглядит как-то неловко, и игра не очень хорошо работает.
С одной сторонысторона У меня есть классический игровой цикл (в отдельном потоке): во время выполнения обновления, рендеринга, рисования, сна немного
Теперь я не очень хорошо знал, как заставить это работать с циклами таймера.Я использовал подход обработчика - создавайте классы, которые расширяют обработчик, делайте то, что они должны делать в handleMessage, и затем вызывайте сами с помощью sendMessageDelayed.
Они просто обновляют состояние игры.Рендеринг результирующих изменений будет сделан в gameLoop.
Этот подход требует синхронизации для обновления gameloop, не мешающего обновлению таймеров.
И - кроме этого мне нужно обработатьтрогать события - вниз, вверх и двигаться!Мой подход здесь был, как и в случае с таймерами, просто обновить состояние игры и оставить его в цикле для правильной обработки и отображения.
Я не знаю, могу ли я быть на совершенно неверном пути, нубАндроду, и сделал это так, как я думал, "может работать".
Например, я не уверен, нужно ли делать игровой цикл в отдельном потоке.Я думал, что это, чтобы показать результаты обработки касания (перемещения) в соответствии с определенной частотой кадров.
С другой стороны, я мог выйти из цикла и просто сказать рисовать после каждого обновления таймера и после каждой обработки касания, но это тоже не очень хорошо работает.
Вопрос в том, каков общий подход к такого рода играм?(синхронизированные циклы / сенсорные события (перемещение), которые должны непрерывно отображаться на экране).
Заранее спасибо.