サイトのトップへ戻る

libGDX ドキュメント 日本語訳

サイト内検索

ジェスチャー検知

タッチスクリーンはジェスチャーベースの入力に向いています。 ジェスチャには、ピンチズームやタップやダブルタップや長押しなどがあります。

Libgdx では以下のジェスチャを検知することができる GestureDetector (source) が用意されています:

  • touchDown: ユーザーが画面をタッチする。
  • longPress: ユーザーが画面をしばらくの間タッチし続ける。
  • tap: ユーザーが画面をタッチしてその後指を離す。タップとして認識されるには、指が最初に触れた位置から一定の四角範囲内を出て動いてはいけません。 ユーザーが特定の時間間隔でタップを行った場合は、複数回の連続タップが検知されます。
  • pan: ユーザーが画面上で指をドラッグする。これは現在のタッチ座標だけでなく、現在のタッチ座標と直近のタッチ座標の差分も通知します 2D環境でカメラのパンを実装するのに便利です。
  • panStop: panが終わった時に呼び出されます。
  • fling: ユーザーが画面上でドラッグして、指を離す。スワイプ操作を実装するのに便利です。
  • zoom: ユーザーが画面上に指を二つ置き、それらを近づける、もしくは遠ざけるように動かす。これは動作開始時の二つの指の間の距離と、現在の二つの指の間の距離の両方をピクセル単位で通知します。カメラのズーム機能を実装するのに便利です。
  • pinch: zoomと同じ機能を持ちます。こちらは二つの指の間の距離ではなく、二つの指の位置を通知します。カメラのズーム機能の他、回転のようにより高度ジェスチャーを実装するのに便利です。

GestureDetector は 隠れイベントハンドラ です。 ジェスチャーを受け取るには、 GestureListener インタフェースを実装してそれを引数として GestureDetectorのコンストラクタに渡す必要があります。 そしてその DetectorをInputMultiplexer の InputProcessorとして設定するか、メインの InputProcessorとして設定します:

public class MyGestureListener 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 panStop(float x, float y, int pointer, int button) {

        return false;
    }

    @Override
    public boolean zoom (float originalDistance, float currentDistance){

       return false;
    }

    @Override
    public boolean pinch (Vector2 initialFirstPointer, Vector2 initialSecondPointer, Vector2 firstPointer, Vector2 secondPointer){

       return false;
    }
}
Gdx.input.setInputProcessor(new GestureDetector(new MyGestureListener()));

GestureListener は各メソッド内でtrue かfalseを戻り値で返すことで、イベントを確定させるか次のInputProcessor に回すかを通知することができます。

普通のInputProcessorへ通知されるイベントと同様に、各メソッドは描写スレッド上でApplicationListener.render() が呼び出される直前に呼び出されます。

GestureDetectorには、ジェスチャー検知に関する様々なパラメータを設定できる第二コンストラクタがあります。 詳細情報についてはJavadocs を参照してください。

前へ | 次へ