libGDX InputListener,InputProcessor,InputAdapter之间的区别是什么

时间:2017-08-19 06:59:23

标签: libgdx

我对libGDX的触摸处理有点困惑。我已经看到了所有三种类型的用法。

InputProcessor: 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;
            }

        });
    }

}

我找不到另一个与众不同的人。我应该使用哪一个?感谢

1 个答案:

答案 0 :(得分:1)

<强> InputListener

InputListener是用于接收和处理InputEvents的低级输入事件的EventListener

EventListener是一个带有handle(Event)方法的接口,它被添加到actor以获得有关事件的通知。实现EventListener接口的类使用instanceof来确定它们是否应该处理事件。

演员只需要添加InputListener即可开始接收输入事件。

<强> InputProcessor

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

<强> InputAdapter

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