Меню выбора уровня в игре (Android)

Подскажите, как сделать модное меню выбора уровня в игре, как например в Angry Birds или Blast Monkey (и чтобы там поддерживался скорллинг пальцами с плавными движениями).

Я делаю игру, используя libgdx, и это нужно в ручную реализовывать или можно с помощью встроенных компонентов интерфейса Android?

Вот как оно должно выглядеть:
19 февраля в 00:11
2
KvanTTT 12,1

отсортировано по дате по оценке
ответы (3)

+1
Zeldan #
Кастомизированный HorizontalScrollView, например, куда запихиваете свои кастомные кнопки(со всеми скоре, поинтами и другой ерундой), по нажатию уже грузится непосредственно libgdx уровень, делать как часть libgdx активити не советую.
Получится непереносимо под другие платформы. libgdx тем и хорош, что можно с ним писать одновременно под Android, Windows и Linux. ertaquo, 19 февраля в 11:51
Да, libgdx конечно большой плюс, но боюсь потребуется много усилий, чтобы это все реализовать.
А ты, ertaquo, решил эту проблему в libgdx или не потребовалось? )
KvanTTT, 19 февраля в 13:31
Мне пока что не потребовалось, но скоро надо будет :-) ertaquo, 19 февраля в 17:32
ertaquo, вы писали игры под Android, которые потом игрались на Windows и Linux? Заставка это не так тяжело в плане переносимости, вопрос зачем это делать уже, если непонятно как на одной платформе пойдет. Кроссплатформенность это хорошо, но поведение в системах Android Windows кардинально отличается, начиная от размеров экрана и заканчивая интерфейсом управления в игре Zeldan, 19 февраля в 17:41
Сейчас пишу одну такую. Подобные кроссплатформенные фреймворки (SDL, libgdx и прочие) как раз нужны для того, чтобы вести себя одинаково на разных платформах. Да и зачем мудрить с кучей Activity, когда это делается довольно легко средствами libgdx (к которому все равно все сводится в конечном итоге)? ertaquo, 19 февраля в 18:14
+1
ertaquo #
Если вы делаете не при помощи Stage и Actor'ов, рекомендую перейти на них.
Делается это так. Создается несколько Actor'ов, по одному на каждый уровень. В Stage задаются две переменные типа float, например prevLevel и currLevel. Они влияют на отрисовку уровней-Actor'ов: каждая единица означает смещение по оси X на некое расстояние (если брать скрин из Angry Birds, то это будет отрезок между правыми краями двух уровней). Если пользователь проводит пальцем линию, то надо запомнить при нажатии prevLevel, а currLevel изменить на (длина между точками нажатия) / (расстояние между краями). После отпускания пальца надо изменять currLevel в противоположную от prevLevel сторону, к ближайшему целому числу (таким образом создавая анимацию). Если длина отрезка между нажатием и отпусканием пальца слишком маленькая, то надо реагировать в зависимости от того, где произошло нажатие: если в центре, запускаем уровень, если по бокам — меняем currLevel.
Не слишком понятно, но как объяснить понятнее — не знаю.
+1
KvanTTT #
Может кому-нибудь будет полезно:

В самой последней (разрабатываемой) версии libgdx появился компонент FlickScrollPane, который частично позволяет реализовать функциональность выбора уровня.

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