libgdx提供了两种获取输入事件的方式:轮询和事件回调java
轮询:ide
if(Gdx.input.isTouched()){ float x=Gdx.input.getX(); float y=Gdx.input.getY(); //do something }
在任何地方经过以上的方法去判断是否有点击事件,通常会放在大循环中函数
事件回调:code
Gdx.input.setInputProcessor(stage);
首先向libgdx注册事件的回调接口(整个程序只容许有一个),好比像上面的把stage传入(stage继承至InputAdapter)继承
而后有事件时stage中的事件回调函数就会被触发。接口
给Actor添加监听事件时须要设置Actor为可点击状态事件
myActor.setTouchable(Touchable.enabled);
而后给他添加监听事件get
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