2016-09-09 6 views
2

私はアンドロイドで感圧のゲームを開発しています。 (または他の言葉でゲームが終了した) しかし、私はゲームエンジンを使い始めたいと思うので、私はLibgdxを使うことに決めました。 しかし、GestureDetector.GestureListenerとInputProcessor Interfaceは、Androidの内部MotionEventからの圧力パラメータを提供しません。 私は手動でゲームをView.OnTouchListenerとして設定しようとしましたが、スレッドモデルに干渉しています...Libgdxがタッチイベントの圧力を受ける

回避策はありますか?

答えて

2

これまでのところ1つの選択肢があります。つまり、getPressure()からMotionEventまでです。この関数は0から1の間の値をfloatで返します。 docs

注:圧力センサーのないデバイスは、タッチポイントのサイズで圧力をシミュレートします。

より多くの圧力は、指で覆われたより多くの画面領域を意味します。

setOnTouchListenerは、あなたに圧力値を得ることができるMotionEventオブジェクトを与えることができます。ここで

someView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     float pressure = event.getPressure(); 
    } 
}); 
+0

THXは、一般的なMotionEventsについてですが、Libgdxとは何の関係もありませんが、私は THXとにかく –

+0

良いあなたはそれを見つけた私の質問への答えを見つけたが、それはMotionEventがLibgdxによって圧力をシミュレートするために使用されていないという意味ではありませんまた、コミュニティとのよりよいやり方を共有する必要がありますので、私の解決策をすでに投稿した; と、MotionEventが使用されていないという点については、 –

+0

Libgdxによるシミュレーション圧力のために: 私は少しコミュニケーションの問題があると信じています。 Libgdxは、EventStructureに圧力パラメータ/変数を提供していません これは、MotionEventsで意味するものはLibgdxとは関係がありません。 LibgdxはMotionEventsを取得し、内部でそれらを再構成し、圧力情報を削除します。そのため、私は回避策が必要でした:手動でタッチリスナーを追加し、手動でonTouchイベントを呼び出すことです。 –

2

トリックは、私がonTouchListenerを上書きし、入力にMotionEventを転送するためにinitializeForViewを呼び出す必要があるということですゲームオブジェクト

final MyGdxGame game = new MyGdxGame(); 

    View view = initializeForView(game, config); 
    view.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      getInput().onTouch(v, event); 
      game.setPressure(event.getPressure()); 
      Log.v("log", "hooked " + event.getPressure()); 
      return true; 
     } 
    }); 

に圧力を加えるための私のコードの一部です。 Handler of Libgdx。しかし、あなたが答える

+1

あなたはこれを求めました。しかし、GestureDetector.GestureListenerとInputProcessor Interfaceはアンドロイド内部のMotionEventから圧力パラメータを提供せず、与えられています。とにかく見て良かった、あなたはそれをしてくれました。+ –

+0

あなたは私の質問に少し不明だったようです:-) –

+1

あなたのQを編集してコードを入れてください。答えはここではありません – Infamous

関連する問題