2016-09-09 2 views
2

Ich entwickle ein druckempfindliches Spiel auf Android. (Oder mit anderen Worten das Spiel ist fertig) Aber ich weiß, ich möchte beginnen, eine Spiel-Engine zu verwenden, und ich entschied mich, Libgdx zu verwenden. Der GestureDetector.GestureListener und die InputProcessor-Schnittstelle stellen jedoch nicht den Druckparameter vom android-internen MotionEvent bereit. Ich habe versucht, das Spiel manuell als View.OnTouchListener, aber das ist mit dem Threading-Modell stören ...Libgdx bekommen Druck Touch-Ereignis

Vorschläge für eine Arbeit?

Antwort

2

Es gibt nur eine Option soweit ich weiß, d. H. getPressure() von MotionEvent Klasse. Die Funktion gibt Ihnen den Wert zwischen 0 und 1 in float. docs

Hinweis: Gerät ohne Drucksensor simuliert den Druck durch die Größe des Berührungspunkts.

Mehr Druck bedeutet mehr Fläche des Bildschirms mit Finger bedeckt.

setOnTouchListener kann Ihnen MotionEvent Objekt geben, aus dem Sie den Druckwert erhalten können wie.

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

thx, aber sie beantworten allgemeine MotionEvents über hat aber nichts mit Libgdx zu tun, aber ich fand eine Antwort auf meine Frage thx sowieso –

+0

gut Sie es gefunden, aber es bedeutet nicht, Motion wird für die Simulation von Druck, der durch Libgdx nicht verwendet Außerdem solltest du deinen besseren Weg mit der Community teilen, so dass andere davon profitieren, wenn du –

+0

magst, wie du in der nächsten Antwort sehen kannst. Ich habe bereits meine Lösung gepostet ;-) und bis zu dem Punkt, dass MotionEvent nicht verwendet wird für Simulationsdruck von Libgdx: Ich glaube wir haben ein kleines Kommunikationsproblem. Libgdx stellt in seiner EventStructure keinen Druckparameter/Variable zur Verfügung, was ich mit MotionEvents gemeint habe, hat nichts mit Libgdx zu tun. Libgdx nimmt die MotionEvents und restrukturiert sie intern und entfernt die Druckinformationen. Das ist der Grund, warum ich eine Arbeit brauchte: Manuelles Hinzufügen eines Touchscreens und manuelles Aufrufen des OnTouch-Ereignisses. –

2

Hier ist ein Teil meines Codes ist für den Druck, um ein Spiel Objekt Hinzufügen

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; 
     } 
    }); 

Der Trick ist, dass ich initializeForView fordern, um die onTouchListener und leitet den MotionEvent an den Eingang zu überschreiben Handler von Libgdx.

+1

Sie gefragt, 'aber die GestureDetector.GestureListener und die InputProcessor Interface bieten nicht die Druck-Parameter aus dem android internen MotionEvent' und es ist gegeben. trotzdem ist es gut zu sehen, du hast es geschafft, + 1 –

+0

thx scheint, dass ich mit meiner Frage ein wenig unklar gewesen bin :-) –

+1

EDIT dein Q und setze den Code dort. nicht als Antwort hier – Infamous