2014-12-06 6 views
17

Ich arbeite an einer Multitouch-App mit Monogame, wo mehrere Benutzer gleichzeitig auf einem größeren Multi-Touch-Bildschirm mit separaten Dokumenten/Bildern/Videos arbeiten können, und ich frage mich, ob es möglich ist, Gesten "kontextbewusst" zu machen Das heißt, zwei Finger, die ein Dokument auf einer Seite der Wand einklemmen, sollten niemanden davon abhalten, die andere Seite der Wand zu schwenken.Ist es möglich, "kontextuelle" Gesten in Monogame/XNA zu erhalten?

Die Art und Weise monogame funktioniert, werden alle Eingangspunkte in Gesten übersetzt, die ausgelesen werden können:

if (TouchPanel.IsGestureAvailable) 
{ 
    var gesture = TouchPanel.ReadGesture(); 
    // do stuff 
} 

Gibt es eine Möglichkeit Gesten auf dem Bildschirm zu einem bestimmten Punkt zu machen, beschränkt, oder ich tun muss ich das selbst umsetzen? Wenn Sie sich beispielsweise den Quellcode ansehen, scheint es, dass die TouchPanelState Klasse die ganze Arbeit erledigt, aber leider sind ihre Konstruktoren internal.

+0

Ich weiß nicht und habe keine XNA oder Monogame Programmierung, aber für die Aufzeichnung, es scheint, gibt es eine 'TouchPanel' statische Klasse, die eine' GetState() 'Methode hat. Vielleicht könnte das helfen, die gewünschte 'TouchPanelState'-Klasse zu instanziieren? –

Antwort

2

Diese Funktion ist nicht in MonoGame integriert, da sie nicht Teil des ursprünglichen XNA ist. Im Wesentlichen möchten Sie mehr als ein "logisches" TouchPanel, das durch sein Unterrechteck des Fensters definiert wird. Allerdings TouchPanel ist statisch, daher gibt es nur eine für das gesamte Spiel in Standard-XNA.

Die gute Nachricht ist, dass MonoGame seine eigene Gestenerkennung durchführt. Also, der Code ist da, du musst nur ein paar Änderungen an MonoGame vornehmen.

ZB ...
-Make TouchPanel eine nicht statische Klasse, die mit einer bestimmten Unterrect zugeordnet werden kann.
- Fügen Sie nicht-statische Versionen aller TouchPanel-Methoden hinzu.
- Die statischen Methoden leiten auf ein Singleton/eine Instanz von TouchPanel um, wobei die alte API beibehalten wird.
... jetzt können Sie optional weitere TouchPanel (s) zuweisen, die NICHT den gesamten Bildschirm anzeigen.

Hinweis: Dies hilft Ihnen nicht, aber MonoGame erlaubt Ihnen mehr als ein Betriebssystemfenster zu haben (nur Windows afaik). In diesem Fall ist das statische TouchPanel das erste Fenster und es gibt eine separate API für den Zugriff auf Touch Eingabe/Gesten für zusätzliche Fenster.