2010-12-13 2 views
3

На платформе Android, как бы отделить рендеринг от логики? Я могу получить базовый класс пользовательских потоков, выполняющий чертеж, но то, что я не получаю, - это место, где можно добавить логическое обновление. Проводя некоторые исследования, я думаю, было бы лучше использовать два разных потока по одному для каждого, рендеринг и логическое обновление. Все, что я могу думать об atm, - это обновить с помощью onDraw в той же теме. Любые указатели на учебные пособия или некоторые идеи по этому вопросу были бы высоко оценены, спасибо.Андроид и логические потоки

+0

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

+0

Uhhh, как я понимаю, вы бы обновили свою логику всякий раз, когда это нужно (когда игрок нажимает «вверх», чтобы переместить проигрыватель «вверх»/вперед) и визуализировать обновленную позицию графика/спрайта. Но вызов логики обновления не должен находиться в том же потоке, где выполняется рендеринг. – semajhan

+1

semajhan, игры с физикой в ​​них не просто обновляются на основе пользовательского ввода - они также обновляются по времени, прошедшему. –

ответ

2

Я разработал одну из самых скачиваемых игр на Android-рынке, но прошло уже 2 года, поэтому это решение может быть устаревшим. Что я сделал: - использовать вид объекта, как вид контента - переопределить метод рисования() класса этого пользователя объекта - в конце метода Жеребьевка(), вызов doLogic()

Обратите внимание, что как вызов рендеринга, так и doLogic() происходят в основном потоке. Это звучит как нет-нет, но он работает для большинства игр (и дает вам автоматическую синхронизацию без необходимости усложнения).

Смежные вопросы