我現在有它處理所有我想要的手勢一類,它看起來像這樣:LibGDX:在一個單獨的類創建GestureListener
public class InputHandler implements GestureDetector.GestureListener{
private Player myPlayer;
public InputHandler(Player player){
myPlayer = player;
}
@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) {
if(velocityY > 0){
myPlayer.onSwipeUp();
}
return false;
}
@Override
public boolean pan(float x, float y, float deltaX, float deltaY) {
return false;
}
@Override
public boolean panStop(float x, float y, int pointer, int button) {
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;
}
@Override
public void pinchStop() {
}
}
正如你所看到的,我使用的唯一方法是「fling」方法,但我想在我的'MainScreen'類中創建手勢監聽器,因爲它包含對'myPlayer'的引用,我想將其傳入此類,但我不確定如何創建監聽器。到目前爲止,我有這在我的構造函數:
public class GameScreen implements Screen {
private GameWorld world;
private GameRenderer renderer;
GestureDetector gd;
public GameScreen(){
float screenWidth = Gdx.graphics.getHeight();
float screenHeight = Gdx.graphics.getWidth();
float gameWidth = 816;
float gameHeight = screenHeight/(screenWidth/gameWidth);
int midpointY = (int)(gameHeight/2);
world = new GameWorld(midpointY);
renderer = new GameRenderer(world);
gd = new GestureDetector(new myGestureListener(world.getPlayer())); //Error here, 'myGestureListener' cannot be resolved
Gdx.input.setInputProcessor(gd);
}
據我所知,「myGestureListener」從來沒有被創造的,因此不能得到解決,但我很困惑,我怎麼能解決這個錯誤,同時也確保了參考正確傳遞。如果我需要初始化一個GestureListener,我該怎麼做?
如果這個問題沒有意義或者沒有解決方案,我很抱歉,我還是使用libGDX框架進行編碼的新手。
您沒有創建一個名爲'myGestureListener'的類。 – Moira
除了您在下面給出的問題的答案之外,還有一點建議:嘗試從您的播放器中分離監聽器(遵循SOLID原則)如果您只需要捕捉fling()事件,可以創建一個簡單的接口()方法,讓GameScreen實現這個接口,並將抽象的GameScreen傳遞給InputHandler(FlingListener監聽器)... – evident