我是直接从接口调用接口方法,我的意思是没有实现,并且可以正常工作吗?
问题描述
这是来自LibGDX框架,我正在调用方法
Gdx.input.isKeyPressed(Input.Keys.LEFT);
这是Gdx类的相关部分:
public class Gdx {
//..
public static Input input;
//..
}
以及输入的相关部分:
public interface Input {
//..
public class Keys { //..
}
//..
public boolean isKeyPressed (int key);
//..
}
最糟糕的是,它正在工作!!如果我按下向左箭头,则返回true。
我不明白为什么:(好像我在调用没有实现的接口方法。
帮助我
如果有人愿意,我将保留两个类的源代码的链接:
https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/Gdx.java
https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/Input.java
思路:
/** 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.
*
* 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
的instances的引用。但是,如何以及在何处实施它们?
LibGDX知道它正在运行的设备类型,并选择相应地实现,例如,在Input
实现的情况下,如果我们在Android设备上运行,则可以使用Input
实现:AndroidInput
而且所有这些都是在幕后自动为我们完成的,因此我们将更多精力放在制作出色的游戏/应用程序上。