Из исходного кода :
/** Environment class holding references to the {@link Application}, {@link Graphics}, {@link Audio}, {@link Files} and
* {@link Input} instances. The references are held in public static fields which allows static access to all sub systems. Do not
* use Graphics in a thread that is not the rendering thread.
* <p>
* This is normally a design faux pas but in this case is better than the alternatives.
* @author mzechner */
public class Gdx {
public static Application app;
public static Graphics graphics;
public static Audio audio;
public static Input input;
public static Files files;
public static Net net;
public static GL20 gl;
public static GL20 gl20;
public static GL30 gl30;
}
Таким образом, вы можете видеть в документации, что этот класс содержит ссылки на экземпляры из Application
, Graphics
Audio
и Input
. Но как и где они реализованы?
LibGDX знает, на каком типе устройства оно работает, и выбирает для его реализации соответственно, например, в случае реализации Input
, если мы работаем на устройстве Android, мы бы go с реализацией AndroidInput
:
И все это делается автоматически для нас под капотом, поэтому мы уделяем больше внимания создание отличной игры / приложения.
Так что на самом деле, когда мы используем:
Gdx.input.isKeyPressed(Input.Keys.LEFT);
Мы используем правильную реализацию Input
для нашего устройства и не вызываем метод из самого интерфейса.