Das ganze ist ein Menue mit 4 Buttons die in einem Kreis
trapiert sind. Quasiin alle 4 Himmelrichtungen je 1 Button.
Nun möchte ich das sich der Button der jeweils angeklickt wird
nach unten dreht.
Da du deinen Kreis in 4 Segmente unterteilst, gibt es somit nur drei mögliche Situationen:
- Drehen um 90°
- Drehen um 180° (2 * 90°)
- Drehen um 270° (3 * 90°)
Die Schwierigkeit liegt hier wohl dabei heaus zu finden wie
weit die rotation stattfinden soll, da die Buttons ja ständig
ihre Position ändern.
Ganz einfach:
Deine Buttons werden mit einer Kennung ausgestattet, also 0, 1, 2 und 3.
In einer Variable AKTUELL merkst du dir die Kennung des aktuell unten liegenden Buttons. Anhand dieses Wertes und anhand des geklickten Buttons kannst du dann bestimmen, welche Drehung du verwenden musst.
Es kommen lediglich 4 Szenarien in Frage, in denen jeweils 3 Möglichkeiten existieren, also nähern wir uns der ganzen Sache, indem wir es durchspielen: (Gehen wir von einer Drehung im Uhrzeigersinn aus)
Szenario 1:
1
0 2
**3**
Deine Variable AKTUELL hat jetzt den Wert 3.
Rechnen wir einfach immer AKTUELL - geklickter Button:
Klick auf 2 = 3 - 2 = 1 => 1 * 90° = 90°
Klick auf 1 = 3 - 1 = 2 => 2 * 90° = 180°
Klick auf 0 = 3 - 0 = 3 => 3 * 90° = 270°
… bringt das gewünschte Verhalten!
Szenario 2:
0
3 1
**2**
Deine Variable AKTUELL hat jetzt den Wert 2.
Klick auf 1 = 2 - 1 = 1 => 1 * 90° = 90°
Klick auf 0 = 2 - 0 = 2 => 2 * 90° = 180°
Klick auf 3 = 2 - 3 = -1 => -1 * 90° = -90°
Szenario 3:
3
2 0
**1**
Deine Variable AKTUELL hat jetzt den Wert 1.
Klick auf 0 = 1 - 0 = 1 => 1 * 90° = 90°
Klick auf 3 = 1 - 3 = -2 => -2 * 90° = -180°
Klick auf 2 = 1 - 2 = -1 => -1 * 90° = -90°
Szenario 4:
2
1 3
**0**
Deine Variable AKTUELL hat jetzt den Wert 0.
Klick auf 3 = 0 - 3 = -3 => -3 * 90° = -270°
Klick auf 2 = 0 - 2 = -2 => -2 * 90° = -180°
Klick auf 1 = 0 - 1 = -1 => -1 * 90° = -90°
Was man schnell sieht: In allen Situationen würde das gewünschte Ergebnis eintreten, nur dass in manchen Situationen eben eine Drehung gegen den Uhrzeigersinn entsteht (z.B. -180°).
Um diese aufzuheben, addierst du einfach bei einem negativen Ergebnis mit 360° und somit erhältst du die richtige Drehung im Uhrzeigersinn.
Als Beispiel nochmal Szenario 3:
3
2 0
**1**
Deine Variable AKTUELL hat jetzt den Wert 1.
Klick auf 0 = 1 - 0 = 1 => 1 * 90° = 90°
Klick auf 3 = 1 - 3 = -2 => -2 * 90° = -180° => 360° + (-180°) = 180°
Klick auf 2 = 1 - 2 = -1 => -1 * 90° = -90° => 360 + (-90°) = 270°
Alles klar?
Ciao Bill