私は現在、私が望むすべてのジェスチャーを処理するクラスを持っており、それは次のようになります。あなたが見ることができるように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"メソッドですが、私はこのクラスに渡したい 'myPlayer'への参照を含んでいるので、私の 'MainScreen'クラスにジェスチャリスナを作成したいと思いますが、リスナを作成する方法がわかりません。これまでのところ私は、コンストラクタでこれを持っている:
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