Hallo zusammen,
Ich habe ein Panel mit insgesamt 14 Buttons darauf, jeweils 2 in einer Reihe. Wenn ich den Finger auf einen Button setze und ihn dann ziehe, soll ein Pfeil gezeichnet werden, der dem Finger folgt und je nach dem wo ich ihn hin ziehe, die Richtung und Länge ändern. Dabei soll auch erkannt werden ob er dabei einen anderen Button streift. Wenn ich dann los lasse, soll der Pfeil verschwinden und ein Event ausgelöst werden, dem beide Buttons bekannt sind, also der Start-Button und der über dem losgelassen wurde.
Soweit der Plan. Bei meinen Recherchen dazu habe ich dieses sehr interessante Projekt gefunden, jedoch hilft mir das auch nur begrenzt, weil ich kein festes Ziel habe auf das der Pfeil zeigen könnte. Auch scheinen meine Buttons sich das Vorrecht zu nehmen auf die Berührung zu reagieren, auch wenn ein transparentes Panel darüber liegt, welches ein Touch-Event hat. Das wird nur nie ausgelöst.
Hat jemand einen Denkanstoß für mich? Danke.
Hier der bisherige Code:
Edit: Ich weiß, die doppelte Schleife um den Button zu ermitteln, ist so richtig schlecht, das wird noch geändert
Ich habe ein Panel mit insgesamt 14 Buttons darauf, jeweils 2 in einer Reihe. Wenn ich den Finger auf einen Button setze und ihn dann ziehe, soll ein Pfeil gezeichnet werden, der dem Finger folgt und je nach dem wo ich ihn hin ziehe, die Richtung und Länge ändern. Dabei soll auch erkannt werden ob er dabei einen anderen Button streift. Wenn ich dann los lasse, soll der Pfeil verschwinden und ein Event ausgelöst werden, dem beide Buttons bekannt sind, also der Start-Button und der über dem losgelassen wurde.
Soweit der Plan. Bei meinen Recherchen dazu habe ich dieses sehr interessante Projekt gefunden, jedoch hilft mir das auch nur begrenzt, weil ich kein festes Ziel habe auf das der Pfeil zeigen könnte. Auch scheinen meine Buttons sich das Vorrecht zu nehmen auf die Berührung zu reagieren, auch wenn ein transparentes Panel darüber liegt, welches ein Touch-Event hat. Das wird nur nie ausgelöst.
Hat jemand einen Denkanstoß für mich? Danke.
Hier der bisherige Code:
B4X:
Public Sub Initialize
' B4XPages.GetManager.LogEvents = True
End Sub
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("Main")
Canvas.Initialize(PNL_Content)
B4XPages.SetTitle(Me, Application.LabelName)
Wait For (SetMenuBar) Complete(Result As Boolean)
Dim r As Reflector
r.Target = PNL_TransPanel
PNL_TransPanel.BringToFront
r.SetOnTouchListener("TransPanel_Touch")
End Sub
Private Sub TransPanel_Touch (o As Object, ACTION As Int, x As Float, y As Float, motion As Object) As Boolean
If ACTION = PNL_Content.TOUCH_ACTION_MOVE_NOTOUCH Then Return False
TouchLocation(0) = x
TouchLocation(1) = y
Dim FoundButton As Button
For Each V As View In PNL_Content.GetAllViewsRecursive
For i = V.Left To V.Left + V.Width
If i = x Then
For u = V.Top To V.Top + V.Height
If u = y Then
FoundButton = V
Exit
End If
Next
End If
Next
Next
If FoundButton.IsInitialized Then
ShowArrow(FoundButton)
End If
Return True
End Sub
Sub ShowArrow(Button As Button)
Dim x As Int = Button.Left + Button.Width / 2
Dim y As Int = Button.Top + Button.Height / 2
Canvas.Initialize(PNL_Content)
Canvas.DrawLine(x, y, TouchLocation(0), TouchLocation(1), Colors.Black, 1dip)
End Sub
Edit: Ich weiß, die doppelte Schleife um den Button zu ermitteln, ist so richtig schlecht, das wird noch geändert
Last edited: