libgdx 輸入事件系統

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

相關文章
相關標籤/搜索