Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03323.jsonl.gz/1221

Eine Animation besteht aus beliebig vielen Objekten, welche zu bestimmten Zeitpunkten erscheinen und wieder verschwinden und sich dazwischen verändern können. Jedem Objekt sind ein oder mehrere Tracks zugeordnet. Der ganze Ablauf der Animation ist in Frames eingeteilt, welche auf der Zeitachse beliebig verteilt werden können.
Frames legen die Zeitpunkte fest, zu denen ein Track beginnt oder endet. Die Zeitintervalle zwischen zwei Frames können beliebig gewählt werden. Eine Animationssequenz zwischen zwei beliebigen Frames kann beliebig oft repetiert werden. Zudem gibt es spezielle Stop-Frames, an denen die Animation für eine beliebige Zeit pausiert werden kann oder gestopt wird. Frames können angesprungen werden.
Jeder Track hat ein Start- und ein End-Frame und ist genau einem Objekt zugewiesen. Tracks eines bestimmten Objektes können sich zeitlich nicht überlappen. Ein Objekt ist nur sichtbar während der Cursor sich zwischen Start- und End-Frame befindet. Als Start- und End-Frames können beliebige Frames gewählt werden. Soll ein Objekt während der ganzen Animation angezeigt werden, müssen das erste und das letzte Frame der Animation dem Track zugewiesen werden oder das Objekt wird ausserhalb der Animation statisch definiert.
Dem Start- und dem Endpunkt eines Tracks ist je ein Objekt-Zustand «ObjState» zugeordnet. Dieser Zustand definiert, wo sich das Objekt zu diesem Zeitpunkt befinden soll, wie gross es sein soll und welche Transparenz zwischen 0 (unsichtbar) und 1 (undurchsichtig) es haben soll. Die Zustände zwischen diesen zwei Zeitpunkten werden von CAnim interpoliert. Wenn das Objekt also beim Track-Start am Ort A ist und beim Track-Ende am Ort B, so bewegt es sich zwischen diesen Zeitpunkten kontinuierlich von A nach B, ändert allenfalls seine Grösse oder wird langsam ein- bzw. ausgeblendet. Soll ein Objekt sich eine bestimmte Zeit überhaupt nicht verändern, so wird für diesen Zeitraum ein Track erzeugt, bei dem Start- und End-Zustand identisch sind.
Objekte können sich natürlich auch überlappen. Welches Objekt über welchem liegt, wird durch den zindex des Style-Sheet (CSS) oder durch die Reihenfolge der Erzeugung des jeweiligen Objektes innerhalb der Webseite bestimmt.
Wie erwähnt ist ein Objekt nur sichtbar, solange sich der Cursor innerhalb eines Tracks dieses Objektes befindet. Besonders beachten muss man den Start- und Endzeitpunkt eines jeden Tracks:
Wenn sich der Cursor genau beim Start-Frame eines Tracks befindet, wird das enstprechende Objekt angezeigt. Wenn sich der Cursor jedoch genau auf dem End-Frame des Tracks befindet, wird das Objekt bereits ausgeblendet, damit es zu keiner zeitlichen Überlappung mit dem nachfolgenden Track kommen kann. Eine Ausnahme bildet der letzte Frame der Animation, bei welchem die Objekte sichtbar bleiben, weil es zu keinen Track-Überlappungen kommen kann.
Diese Eigenschaft muss beim Planen der Animation bedacht werden und die Stop-Frames müssen entsprechend gesetzt werden, damit bei Haltepunkten der Animation nicht unwillentlich Objekte bereits ausgeblendet werden, welche man dem Anwender zu diesem Zeitpunkt noch anzeigen möchte.
Ein Animator hat die Aufgabe, aufgrund der aktuellen Cursorposition innerhalb des Tracks, welche als Parameterwert zwischen 0 und 1 vorliegt, den entsprechenden Objektzustand zu berechnen und diesen an den Actor weiterzureichen.
In CAnim ist ein Standard-Animator eingebaut, der zwischen zwei Objektzuständen interpoliert, die beim Track gespeichert sind. Der Standard-Animator kann für jeden Track oder jeden Actor durch eine eigene Implementation ersetzt werden. Diese Implementation kann bestimmte Funktionen des Standard-Animators überladen. Ein Beispiel eines solchen Animators ist CPolygon. CPolygon ersetzt die standardmässige Bewegung entlang einer Geraden durch eine Bewegung entlang eines beliebigen Polygons.