2013-07-26 47 views
2

我想用一些比較複雜的觸摸屏手勢,我看到,你不能從LibGdx:利用手勢監聽

Gdx.input 

訪問要做到這一點我必須創建一個手勢監聽器,所以我創建了類GestureHandler並複製了wiki中的代碼。我的手勢處理機看起來是這樣的:

public class GestureHandler implements GestureListener { 

@Override 
public boolean touchDown(float x, float y, int pointer, int button) { 
    return false; 
} 

@Override 
public boolean tap(float x, float y, int count, int button) { 
    return false; 
} 

@Override 
public boolean longPress(float x, float y) { 
    return false; 
} 

@Override 
public boolean fling(float velocityX, float velocityY, int button) { 
    return false; 
} 

@Override 
public boolean pan(float x, float y, float deltaX, float deltaY) { 
    return false; 
} 

@Override 
public boolean zoom(float initialDistance, float distance) { 
    return false; 
} 

@Override 
public boolean pinch(Vector2 initialPointer1, Vector2 initialPointer2, Vector2 pointer1, Vector2 pointer2) { 
    return false; 
    } 
} 

我的問題是,現在我已成立手勢監聽器怎麼用它。我如何從這些方法獲取信息?感謝您的任何幫助!

回答

6

wiki

GestureDetector一個是僞裝的InputProcessor。要傾聽 手勢,必須執行GestureListener接口,並將 傳遞給GestureDetector的構造函數。該檢測器是 然後設置爲InputProcessor,無論是在一個InputMultiplexer或作爲 主InputProcessor

我承認是相當緻密的。但在維基更遠一些下來,你會看到:

Gdx.input.setInputProcessor(new GestureDetector(new MyGestureListener())); 

重新組織上述希望的密度小英:GestureHandler實例傳遞到LibgdxGestureDetector實例。該對象將積累「原始」輸入,並將其轉換爲更高級別的「手勢」。要獲得原始輸入,需要將其輸入到原始輸入的位置。通過Gdx.input.setInputProcessor安裝它的最基本的方式,但你也可以通過InputMultiplexer安裝它(但這不值得進入這裏)。

+0

因此,Gdx.input.setInputProcessor(新的GestureDetector(新的GestureHandler());設置輸入,但我怎麼可以訪問這些手勢,因爲所有的方法只是返回一個布爾值,我想要的參數爲例:public boolean longPress (float x,float y)我想要x和y變量 – Bevilacqua

+0

把你的代碼放在回調裏面,你的代碼可能必須有不同的結構來處理像這樣的輸入「事件」(與「輪詢「體系結構) –

+0

你的意思是在GestureHandler類中嗎?EX.longPress(float x,float y){x = 0} – Bevilacqua