LibGDX на Android

Решил всё-таки учебник по Libgdx написать. Это не будет курс, который кусочно расскажет об этой библиотеке. Постараюсь полностью описать все возможные аспекты по порядку так, чтобы в итоге, основываясь на этих статьях, человек смог написать свою игру (:

Исходники

Для удобства работы, решил залить все исходники на github. Все старые туториалы уже залил, новые там же буду публиковать. Так что следим уроки по libgdx на github.

Сообщество

Страница проекта Libgdx. Так же можно посмотреться список игр разработанных на libgdx.

Полезные исходники, примеры

Отловить кнопку Back

При написании игры очень важно сохранять состояние игры при смене фокуса. При нажатии на кнопку Back было бы неплохо ставить игру на паузу или выводить какое-нибудь информационное сообщение (сохранить/загрузить/выйти). В целом всё довольно просто. Скорей всего у вас есть какой-то класс, который задан как обработчик событий (Screen+InputProcessor или Stage).

Gdx.input.setInputProcessor(this);

Если брать классы Screen+InputProcessor и Stage (вернее, если ваш класс наследует какой-нибудь из них), то вы переопределяли методы по обработке нажатий:

@Override
public boolean keyDown(int keycode) {
  if(keycode == Keys.BACK) {
    //что-то делаем при нажатии на кнопку back
    //Log.e("key", "back");
    return true;
  }
}

@Override
public boolean keyUp(int keycode) {
  if(keycode == Keys.BACK) {
    //что-то делаем, когда отпускаем кнопку back
    //Log.e("key", "back");
    return true;
  }
}

При нажатии на копку Back, наши манипуляции отработают, но игра всё равно завершится. Чтобы этого избежать, надо установить флаг после того, как задали обработчик. То есть, для того же класса наследуемого от Screen+InputProcessor будет в show() что-то вроде:

@Override
public void show() {
  ...
  Gdx.input.setInputProcessor(this);
  Gdx.input.setCatchBackKey(true);
}