004
09.03.2017, 17:32 Uhr
ao
(Operator)
|
Ok, also, ich schätze, man muss eine Funktion schreiben, die so aussieht:
C++: |
void my_touch_event_handler (VM_TOUCH_EVENT event, VMINT x, VMINT y) { }
|
In dieser Funktion macht man alles, was getan werden muss, wenn ein Touch-Event auftritt, etwa so:
C++: |
switch (event) { case VM_TOUCH_EVENT_TAP: // Tap-Event (Finger runter) behandeln break;
case VM_TOUCH_EVENT_RELEASE: // Release-Event (Finger hoch) behandeln break;
case VM_TOUCH_EVENT_MOVE: // Move-Event (Finger bewegt sich) behandeln break;
// und so weiter }
|
Abhängig davon, welcher Event aufgetreten ist (Tap, Release, Move, ...), muss man die entsprechende Reaktion programmieren. Die Parameter x und y bedeuten immer die absolute Position auf dem Display, an welcher der Event aufgetreten ist.
Am besten erst mal in jedes Case eine Debug-Ausgabe einprogrammieren (z.B. "Tap x=soundso, y=soundso"), so kriegst du ein Gefühl dafür, welche Gesten welche Events erzeugen. Bei den "trivialen" Events (Tap, Release) ist das mehr oder weniger klar, aber bei Move z.B. ist interessant, in welchen Abständen (zeitlich oder räumlich) die Events gefeuert werden, weil das die Auflösung definiert, mit der Bewegungen erfasst werden können. Und das Verhalten von Longtap und Repeat muss man vermutlich auch erst mal erforschen.
Dann muss man den Touch-Event-Handler noch im System anmelden, damit er bei Bedarf vom System aufgerufen werden kann:
C++: |
VM_RESULT result = vm_touch_register_event_callback (my_touch_event_handler); if (VM_IS_FAILED (result)) exit (EXIT_FAILED);
|
Das macht man normalerweise während des Starts der Applikation. Dieser Post wurde am 09.03.2017 um 17:42 Uhr von ao editiert. |