libGDX InputListener、InputProcessor、InputAdapter有什么区别

标签 libgdx

我对 libGDX 的触摸处理有点困惑。我已经看到了所有三种类型的用法。
输入处理器:
http://www.gamefromscratch.com/post/2013/10/24/LibGDX-Tutorial-5-Handling-Input-Touch-and-gestures.aspx

public class InputDemo2 implements ApplicationListener, InputProcessor {
    @Override
    public void create() {        
        Gdx.input.setInputProcessor(this);
    }


    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    }
}
InputListener这里:
http://www.gamefromscratch.com/post/2013/11/27/LibGDX-Tutorial-9-Scene2D-Part-1.aspx
    public MyActor(){
        setBounds(actorX,actorY,texture.getWidth(),texture.getHeight());
        addListener(new InputListener(){
            public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
                ((MyActor)event.getTarget()).started = true;
                return true;
            }
        });
    }
    
InputAdapter这里:
LibGdx, How to handle touch event?
public class Prac1 extends ApplicationAdapter {
    @Override
    public void create () {
        Gdx.input.setInputProcessor(new InputAdapter(){
            @Override
            public boolean touchDown(int screenX, int screenY, int pointer, int button) {
                return true;
            }

        });
    }
}
我没有发现一个与另一个不同。我应该使用哪一个?

最佳答案

输入监听器
InputListenerEventListener用于接收和处理 InputEvents 的低级输入事件。
EventListener是一个带有 handle(Event) 的接口(interface)添加到参与者以获取有关事件的通知的方法。实现 EventListener 的类接口(interface)使用 instanceof 来确定它们是否应该处理事件。

Actor 只需添加 InputListener开始接收输入事件。

输入处理器

一个 InputProcessor用于接收来自键盘和触摸屏(桌面上的鼠标)的输入事件。为此,它必须向 Input.setInputProcessor(InputProcessor) 注册。方法。在调用 ApplicationListener.render() 之前的每一帧都会调用它。 .

输入适配器
InputAdapter只是 InputProcessor 的适配器类.如果您只想覆盖您感兴趣的某些方法,请使用此类。

关于libGDX InputListener、InputProcessor、InputAdapter有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45768691/

相关文章:

java - LibGDX 导入 TMX 文件

java - 即使我的文件已加载(Android Studio、libGDX、Java),AssetManager.get() 也会返回 null

java - 如何从ArrayList中删除Sprite/Object?

java - LibGdx 中的内存使用

java - 检测 Sprite 是否被触摸的简单方法?

android - 如何将已完成的 libgdx 游戏从 Android 移植到 iOS

libgdx 获取 2d 游戏的屏幕宽度和高度

java - 我如何在 LibGdx 中缩放标签

java - 如何以对齐方式输出文本

java - LibGDX GraphicBug TiledMap 正交相机