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