German Game Pad / Gestures / Multitouch Problem

Jaws

Member
Licensed User
Longtime User
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:

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:

Jaws

Member
Licensed User
Longtime User
Ok, das Problem scheint mit dem Desire zusammenzuhängen:


Zeit für eine neues Gerät...
 
Top