Hallo zusammen,
ich habe ein Problem mit der Gestures Lib.
Ich versuche, ein Gamepad zu programmieren, dass links und rechts unten auf dem Bidschirm zwei Controller anzeigt. Dabei versuche ich, per Koordinaten den Bereich zu definieren, in dem die Controller aktivierbar sind. Der Quelltext basiert auf dem Gestures-Beispiel:
Das Problem: Obwohl der klickbare Bereich nur links unten definiert ist, wirkt sich auch die Berührung unten rechts auf diesen Controller aus, wenn der linke Controller gleichzeitig gedrückt wird. D.h. wenn ich z.B. den linken Controller gedrückt halte, und dann zusätzlich rechts unten klicke, wirkt sich das auf den Controller 1 aus.
Dabei sollte es doch so sein, dass die einzelnen Berührungskoordinaten in einzelne Punkte gespeichert werden und nichts miteinander zu tun haben. Oder sehe ich das falsch?
Genau dasselbe Problem habe ich übrigens auch mit dem GamePad-Demo. Auch da wirkt sich die Berührung eines der Controller auf den anderen Controller und das Verhalten der Objekts aus.
Das Testgerät ist ein HTC Desire mit Android 2.2.2.
Ist das ein Bug?
Danke
PS EDIT: Man kann im Grunde irgendwo auf den Bildschirm tippen, wenn einer der Controller aktiv ist, und dadurch den Status des Controllers verändern. Ebenso beim GamePad-Beispiel. Wenn ich auf das linke Pad tippe und dann mit der rechten hand irgendwo auf den Screen (also außerhalb der im Radius definierten Bereiche!), wirkt sich das trotzdem auf die Controller aus. Wieso?
ich habe ein Problem mit der Gestures Lib.
Ich versuche, ein Gamepad zu programmieren, dass links und rechts unten auf dem Bidschirm zwei Controller anzeigt. Dabei versuche ich, per Koordinaten den Bereich zu definieren, in dem die Controller aktivierbar sind. Der Quelltext basiert auf dem Gestures-Beispiel:
B4X:
Sub GesturesTouch(View As Object, PointerID As Int, Action As Int, X As Float, Y As Float) As Boolean
Dim p As Point
Select Action
Case g.ACTION_DOWN, g.ACTION_POINTER_DOWN
p.Id = PointerID
TouchMap.Put(PointerID, p)
Case g.ACTION_POINTER_UP
TouchMap.Remove(PointerID)
Case g.ACTION_UP
TouchMap.Clear
End Select
Dim px, py As Int
For i = 0 To TouchMap.Size - 1
p = TouchMap.GetValueAt(i)
px = g.GetX(p.Id)
py = g.GetY(p.Id)
' ANGLE PAD
If px <= padx+padr+16 AND py >= pady-padr-16 Then
shipInstance.a = ATan2D (pady - py, padx - px) - 90
Else If px > 700 AND py > 380 Then
Log(shipInstance.a)
End If
Next
Return True
End Sub
Das Problem: Obwohl der klickbare Bereich nur links unten definiert ist, wirkt sich auch die Berührung unten rechts auf diesen Controller aus, wenn der linke Controller gleichzeitig gedrückt wird. D.h. wenn ich z.B. den linken Controller gedrückt halte, und dann zusätzlich rechts unten klicke, wirkt sich das auf den Controller 1 aus.
Dabei sollte es doch so sein, dass die einzelnen Berührungskoordinaten in einzelne Punkte gespeichert werden und nichts miteinander zu tun haben. Oder sehe ich das falsch?
Genau dasselbe Problem habe ich übrigens auch mit dem GamePad-Demo. Auch da wirkt sich die Berührung eines der Controller auf den anderen Controller und das Verhalten der Objekts aus.
Das Testgerät ist ein HTC Desire mit Android 2.2.2.
Ist das ein Bug?
Danke
PS EDIT: Man kann im Grunde irgendwo auf den Bildschirm tippen, wenn einer der Controller aktiv ist, und dadurch den Status des Controllers verändern. Ebenso beim GamePad-Beispiel. Wenn ich auf das linke Pad tippe und dann mit der rechten hand irgendwo auf den Screen (also außerhalb der im Radius definierten Bereiche!), wirkt sich das trotzdem auf die Controller aus. Wieso?
Last edited: