Warning: Table './usr_web1030_3/variable' is marked as crashed and should be repaired query: SELECT * FROM variable in /var/www/web1030/html/mkernel.de/includes/database.mysql.inc on line 128

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 726

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 727

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 728

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 729
[Coder's Implementation{C#} / Animations] Animationen, Teil 2 | Drupal

[Coder's Implementation{C#} / Animations] Animationen, Teil 2

  • warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/common.inc on line 148.
  • user warning: Table './usr_web1030_3/variable' is marked as crashed and should be repaired query: UPDATE variable SET value = 'a:17:{i:0;i:62;i:1;i:61;i:2;i:59;i:3;i:31;i:4;i:30;i:5;i:29;i:6;i:24;i:7;i:21;i:8;i:15;i:9;i:14;i:10;i:11;i:11;i:7;i:12;i:6;i:13;i:5;i:14;i:3;i:15;i:2;i:16;i:1;}' WHERE name = 'menu_masks' in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 609.
  • user warning: Table './usr_web1030_3/variable' is marked as crashed and should be repaired query: UPDATE variable SET value = 'a:0:{}' WHERE name = 'menu_expanded' in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 609.
  • user warning: Table './usr_web1030_3/variable' is marked as crashed and should be repaired query: DELETE FROM variable WHERE name = 'menu_rebuild_needed' in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 634.

Obwohl ich mich gedanklich gerade auf ein "Coding Weekend" mit Arnalyse vorbereite, habe ich genug Zeit gefunden, meine Theorie aus [Coder's Concept / Animations] Animationen, Teil 1 in die Praxis umzusetzen.

Für den ersten Versuch habe ich C# als Plattform gewählt, da ich so den eigenen Timer (hier im Blog, [Coder's Implementation{C#}] Hochauflösender Timer) verwenden konnte. Die Implementierung ist als Klassenbibliothek verpackt, so dass sie in jedem .NET Projekt verwendet werden kann. Es sind 5 Klassen entstanden, die unterschiedliche Aufgaben übernehmen:

  • AnimationCore bildet die Basis der Bibliothek und implementiert die Theorie. Hier fließen Start- und Zielwert sowie die Dauer und der Animationsverlauf ein. Animiert wird über die Funktion Animate(), bei der die vergangene Zeit als Parameter erwartet wird. Um die Integration zu erleichtern, erwartet AnimationCore ein Objekt und den Namen einer auf double typisierten Eigenschaft. Bei jedem Aufruf von Animate() wird dieser Eigenschaft ein neuer Wert zugewiesen. Um die von Windows Forms bekannte InvokeRequiredException zu umgehen, wird der bei der Erzeugung des animationCore Objekts verwendete Thread benutzt, um die Eigenschaft zu schreiben.
  • SimpleAnimation koppelt AnimationCore mit einem VersatileTimer. Statt Animate() gibt es Start() und Stop(). Der Startwert wird nicht benötigt, da beim Aufruf von Start() der aktuelle Wert festgestellt und als Ausgangspunkt verwendet wird.
  • AnimationGroup synchronisiert mehrere Animationen mit einem einzelnen Timer. Es ist möglich, mehrere Animationen zu unterschiedlichen Zeiten beginnen zu lassen und diese aufeinander abzustimmen. Jede Einzelne Animation wird durch ein AnimationElement dargestellt. Zusätzlich zur Dauer benötigt diese Klasse die Startzeit.
  • AnimationFunctions enthält die im Theorie-Artikel ([Coder's Concept / Animations] Animationen, Teil 1) beschriebenen vier Animationsverläufe: Beschleunigen, Bremsen, Linear und Natürlich (Beschleunigen und Bremsen). Für die Kopplung gibt es eine Schnittstelle, wodurch es möglich ist, eigene Animationsverläufe zu implementieren.

Wichtig: AnimationCore legt nicht fest, in welcher Einheit die Zeit übergeben wird. SimpleAnimation, AnimationGroup und AnimationElement jedoch schon. Hier werden die Zeitwerte in Millisekunden erwartet.

Angeheftet an diesen Artikel ist das VS 2008 Projekt. Es enthält neben einer kommentierten Implementierung noch ein Beispiel, das zwei Fortschrittsbalken animiert.

Happy Hacking!