| Andreas Rozek |
|
TkLua ClockDas an dieser Stelle beschriebene TkLua-Programm ist eines der ersten, mit denen der Autor die (dauerhaft) korrekte Funktion seiner TkLua-Distribution für Win32-Plattformen (sowie die dadurch entstehende Rechnerbelastung) getestet hat.
FunktionsbeschreibungDie Anzeige besteht aus einem einzigen Canvas-Element (tkcanvas) mit statischen Grafik-Elementen für das Ziffernblatt und laufend ausgetauschten Grafik-Elementen für die drei Zeiger. Die wesentliche Arbeit wird in der Funktion updateDisplay verrichtet: jeweils zwei globale Variablen pro Zeiger (z.B. HourHand und HourHand_Angle) speichern den Canvas-Index und den aktuellen Winkel des jeweiligen Zeigers. Mit jedem Aufruf von updateDisplay (d.h. einmal pro Sekunde) wird geprüft, ob sich einer der Zeiger weiterbewegt hat - wenn ja, wird das alte Canvas-Objekt für diesen Zeiger entfernt und durch ein neues Objekt in der aktuellen Zeigerstellung ersetzt (leider lassen sich Canvas-Objekte zwar skalieren und verschieben, nicht aber drehen oder scheren). Beim ersten Aufruf von updateDisplay wird ein Winkelvergleich noch nicht durchgeführt, da noch keine Zeiger-Objekte existieren - diese werden erst jetzt erstmalig angelegt. Dadurch daß die Zeiger-Winkel stets aus der aktuellen Uhrzeit ermittelt werden, wirken sich Änderungen der Zeiteinstellung durch den Benutzer oder durch eine automatische Umstellung zwischen Sommer- und Winterzeit spätestens eine Sekunde später auf die Zeitanzeige aus. Allerdings ist die Timer-Funktion, mit deren Hilfe updateDisplay periodisch aufgerufen wird, sehr einfach gehalten, und Laufzeiten des TkLua-Programmes selbst sowie anderer "parallel" zu updateDisplay ablaufender Programme auf demselben Rechner führen regelmäßig zu einem Überspringen einzelner Sekunden - auf nicht übermäßig ausgelasteten Rechnern stimmt die Zeitanzeige jedoch stets auf +/- 1 Sekunde mit der aktuellen Systemzeit überein. Die Marken des Ziffernblattes sowie die einzelnen Zeiger (mit Ausnahme des Sekundenzeigers) werden durch rechteckige geschlossene Polygonzüge gebildet, deren Knoten mit etwas Vektoralgebra in die jeweils erforderliche Orientierung gebracht werden. Nur der Sekundenzeiger besteht der Einfachheit halber aus einer einfachen Linie. Neben dem "Hauptprogramm" enthält Clock die folgenden (globalen) Funktionen (in alphabetischer Reihenfolge):
Das Programm selbst ist recht einfach und sollte auch ohne weitere Beschreibung verständlich sein. QuelltextDer Quelltext des vorgestellten Programmes kann von hier aus heruntergeladen werden:
Literaturhinweise
|
| http://www.Andreas-Rozek.de/Lua/Examples/Clock/index.html | (letzter Stand: 14.04.2002) |