libgdx 输入事件系统

libgdx提供了两种获取输入事件的方式:轮询和事件回调


轮询:

if(Gdx.input.isTouched()){
    float x=Gdx.input.getX();
    float y=Gdx.input.getY();
    //do something
}

在任何地方通过以上的方法去判断是否有点击事件,一般会放在大循环中


事件回调:

Gdx.input.setInputProcessor(stage);

首先向libgdx注册事件的回调接口(整个程序只允许有一个),比如像上面的把stage传入(stage继承至InputAdapter)

然后有事件时stage中的事件回调函数就会被触发。


给Actor添加监听事件时需要设置Actor为可点击状态

myActor.setTouchable(Touchable.enabled);

然后给他添加监听事件

myActor.addListener(new InputListener(){
    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
        return super.touchDown(event, x, y, pointer, button);
    }

    @Override
    public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
        super.touchUp(event, x, y, pointer, button);
    }

    @Override
    public void touchDragged(InputEvent event, float x, float y, int pointer) {
        super.touchDragged(event, x, y, pointer);
    }
});

注意但stage的touchDown方法返回true时其下的所有的Actor的touchDown方法都不会被调用,而且Actor的touchDown方法返回值不是true时touchUp和touchDragged方法都不会被调用

你可能感兴趣的:(事件,input,libgdx)