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方法都不会被调用