Когда я создаю новый проект LibGDX, основной класс проекта Core расширяет ApplicationAdapter . Вот как это выглядит.
package com.marimba.apptest;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
public class AppMain extends ApplicationAdapter {
@Override
public void create () {
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
}
Поэтому я должен изменить ApplicationAdapter на Game, если я хочу вызвать метод setScreen, чтобы переключаться между экранами. Так в чем же смысл применения ApplicationAdapter ? Когда я буду использовать это?
ApplicationListener
напрямую, вы должны предоставить все необходимые методы, включая те, которые вам не нужны (например,pause()
илиresume()
, которые не всегда используются).ApplicationAdapter
для вашего удобства, поэтому вам не нужно хранить пустые методы. Это простой служебный класс, он не добавляет никаких новых функциональных возможностей - он просто делает ваш код чище (или короче ).Поскольку ApplicationAdapter и класс Game реализуют интерфейс ApplicationListener, их можно использовать практически взаимозаменяемо при создании игры. Если вы настроены на использование Screen, ничто не помешает вам реализовать их с обоими вариантами.
Класс Game имеет немного больше накладных расходов при использовании Screens. Тем не менее, эти издержки призваны упростить реализацию различных этапов / уровней в вашей игре. Важно отметить, что эти накладные расходы минимальны.
ApplicationAdapter не имеет каких - либо дополнительных накладных расходов (то есть прямая реализация ApplicationListener). Это дает вам больше контроля, поскольку вы должны делать все самостоятельно. Лично я предпочитаю использовать ApplicationAdapters.
TL; DR: никакой разницы между ними нет. ApplicationAdapter дает вам немного больше контроля, а игра немного меньше работы.
источник