20. Dezember 2010
Nach der Parametrisierung der Zeichen habe ich mich daran gemacht diese zu animieren. Ich habe einen Satz an interessanten Zeichen angelegt, welche ich gerne ineinander transformieren wollte. Hierfür habe ich eine neue Klasse "Stacks" erstellt, dessen Objekte die jeweiligen Parameter der Zeichen speichert. Anfangs hatte ich noch einen fixen Ablauf an Zeichen, die nacheinander durchlaufen wurden. Um die Transformation zu bewerkstelligen habe ich in der draw-Funktion zuerst einen Abschnitt erstellt, welcher die Zwischenwerte von einem zum anderen Zeichen errechnet. Die Werte eines Zeichens werden nach abgeschlossener Transformation, also wenn der Endzustand erreicht ist, in Variabeln gespeichert, damit diese als "previous sign"-Werte wieder mit dem nächsten Zeichen verrechnet werden können. Nachdem ich diesen Ablauf erstellt hatte, wollte ich die Kombination der Zeichen, sprich die Reihenfolge, via Tastenbelegung beeinflussen können. Was vorerst relativ einfach aussah, hat sich dann aber als trickreicher herausgestellt. Ich musste neu eine ArrayList einführen, um nicht an eine fixe Anzahl Elemente gebunden zu sein. Danach ging es mit viel experimentieren weiter, um die Reihenfolge beinflussen zu können. Schlussendlich bin ich bei einem Loop von zwei Elementen gelandet, bei welchem man mit einer Taste ein neues Zeichen einsetzen kann. Dieses ersetzt jeweils das ältere der bestehenden Zeichen. Um die Abfolge auf die Musik abstimmen zu können, werden die Transformationen in einer definierten Zeitspanne ausgeführt, diese ist in einer Variabel in Millisekunden definiert und orientiert sich an der millis-Funktion. So ist gewährleistet, dass der Übergang unabhängig von der Framerate erfolgt.- Neben einem Delay am Anfang für die Animation habe ich noch eine Kreisanimation eingeführt, welche am Ende, ebenfalls zeitlich abgestimmt, angezeigt wird. Der Kreis zoomt von der Mitte aus auf füllt den Bildschirm in kurzer Zeit schwarz.
- Die Zeichen können zusätzlich noch in einem definierten Takt leicht bewegt werden, sodass bei der Skalierung eines Zeichen eine Abstufung in der Bewegung erfolgt. Dieser Effekt macht die Transformationen weniger statisch und unteressanter.
- Durch das Experimentieren wurde mal der Hintergrund schwarz, was zu einer interessanten Invertierung der Zeichen geführt hat. Da ein einzelnes Zeichen mit abwechselnd schwarzen und weissen Flächen aufgebaut ist und nicht mit Outlines, kommen auf schwarzem Hintergrund alle weissen Aussenbereiche zur Geltung.
- Auch können die Zeichen mit einer Taste noch rotiert werden. Hier bin ich nicht ganz zufrieden mit der entsprechenden Funktion, da ich ein Speedup am Anfang programmieren wollte, was auch mehr oder weniger funktioniert hat, aber nicht ganz saubere Abläufe gibt bei mehrmaligem Tastendruck. Wird die jeweilige Taste zweimal nacheinander gedrückt, rotieren die Zeichen schneller und länger.
- Den Cursor habe ich noch ausgeschaltet, zwei kleine Rechtecke zeigen aber trotzdem die x/y-Position der Maus an. Auch die Fullscreen-Library habe ich noch benutzt, um die Umgebung mittels Befehl-F abzudunkeln.