サイトのトップへ戻る

AndEngineドキュメント 日本語訳

長クリックをキャッチする:

このチュートリアルでは、長クリック(タッチイベント)を簡単にキャッチする方法を紹介します。AndEngine にはそうした機能が組み込まれているので、簡単に実行できます。

長クリックは、ユーザーインタフェースを開発する際にとても便利です。 sceneにこれを簡単に実装する方法を理解するには、以下のコードサンプルを参考にしてください。

  • まず最初に、IHoldDetectorListener インタフェースを実装する必要があります。 コンパイラーによって、強制的に三つの未実装メソッドを追加するように求められるでしょう。:
    @Override
    public void onHoldStarted(HoldDetector pHoldDetector, int pPointerID, float pHoldX, float pHoldY)
    {
    	
    }
    
    @Override
    public void onHold(HoldDetector pHoldDetector, long pHoldTimeMilliseconds, int pPointerID, float pHoldX, float pHoldY)
    {
    	
    }
    
    @Override
    public void onHoldFinished(HoldDetector pHoldDetector, long pHoldTimeMilliseconds, int pPointerID, float pHoldX, float pHoldY)
    {
    	
    }
    
  • ContinousHoldDetector オブジェクトの新しいフィールドを作成します:
    private ContinuousHoldDetector continuousHoldDetector;
    
  • このオブジェクトを初期化して、scene にアップデートハンドラとして登録します。(長クリックを検知したい sceneに登録します)
サンプルでは既定のコンストラクタを使用しており、長クリックに関するパラメータも既定値が使用されているので注意してください(長クリックとして見なされるまで指をつけて置くのに必要な時間を渡します) 。独自の値を使ってこれをカスタマイズしたい場合は、ContinousHoldDetectorクラスで提供されている第二コンストラクタを使用できます。 この記事の場合は既定コンストラクタを使用します。
continuousHoldDetector = new ContinuousHoldDetector(this);
yourScene.registerUpdateHandler(continuousHoldDetector);
これで長クリックの実装が完了すると、指定した条件時に実行されるコードを記述できます。:
  • onHoldStarted() - プレイヤーが指を十分な時間付け続けた場合に実行されるコードを記述します。
  • onHoldFinished() - 長クリック認識後にユーザーが指を離した場合に実行されるコートを記述します。