XML » SVG Presenter - Carto:net
XML » SVG Presenter - Carto:net
XML » SVG Presenter - Carto:net
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>XML</strong> <strong>»</strong> <strong>SVG</strong> PRESENTER | STRUKTURIERTE MULTIMEDIA-PRÄSENTATION IM WEB 181<br />
den Zuständen und Manipulationen anderer Objekte abhängig zu machen, 1 etwa mittels <br />
und auch mehrere Animations-Elemente zu verschachteln – die<br />
parallele Änderung bzw. Animation mehrerer Attribute eines Elements ist jedoch nicht möglich: So lässt<br />
sich etwa eine Animation wie die in [Abb.6.5.2.1.1] gezeigte derzeit nicht mittels konventioneller <strong>SVG</strong>-<br />
bzw. SMIL-Syntax realisieren.<br />
Auch die „dynamische“ Anzeige der nächsten Hierarchie-Ebene des Baumes bereitet im Rahmen der von <strong>SVG</strong> angebotenen Funktionalität<br />
einige Schwierigkeiten: Da bei Aktivierung eines „Eltern“-Knotens (etwa<br />
durch Anklicken des „plus“-Symbols) ja nicht nur die Tochterelemente entsprechend sichtbar gemacht,<br />
sondern ebenso alle unterhalb dargestellten Symbole entsprechend weiter „nach unten“ 2 verschoben werden<br />
müssen, 3 sind an dieser Stelle gleich die Attribute 4 einer enormen Anzahl sichtbarer und bislang unsichtbarer<br />
Objekte zu modifizieren. Dies wiederum kann bei ausschließlicher Realisierung in Script-freiem<br />
<strong>SVG</strong> sehr schnell unübersichtlich geraten – wenn es nicht gar völlig unmöglich ist.<br />
Aus diesem Grunde habe ich mich auch hier zur Entwicklung verschiedener „Utility Classes“ entschlossen,<br />
also grundlegender, hilfreicher Objekte und Funktionen, die auch komplexere Operationen<br />
wie etwa die<br />
eben angesprochene „Massen-Manipulation“ von Elementen oder auch Animations-Eigenschaften ermögli-<br />
chen sollten – und zwar naturgemäß wiederum mittels clientseitigem ECMAScript. Aufgrund dessen erscheint<br />
an dieser Stelle auch die Anwendung der Script-Engine beim bereits in [6.5.1] erläuterten Parsing<br />
der internen <strong>XML</strong>-Daten in einem anderen Licht: Da die Präsentationsdaten aus der <strong>XML</strong>-Struktur somit<br />
zur Animation bzw. Anzeige der einzelnen Objekte ohnehin in der Form ECMAScript-konformer Variablen<br />
vorliegen sollten, 5 macht auch der Skript-basierte Parser, 6 insbesondere im Vergleich mit den externe Prozessoren<br />
benötigenden <strong>SVG</strong>-Alternativen [HSL00, Herm02, Sue02] durchaus Sinn und trägt zudem zur erfreulichen<br />
7 Standalone-Eigenschaft des <strong>XML</strong> <strong>»</strong> <strong>SVG</strong> <strong>Presenter</strong>s bei.<br />
6.5.2.1 Animations-Framework<br />
Im Zuge der Realisierung eines, wie soeben dargelegt, für die Umsetzung<br />
des <strong>Presenter</strong>s notwendigen Animations-Frameworks,<br />
gilt es freilich zunächst zu überlegen, welche Grundeigenschaften eine „Animation“<br />
erfüllen sollte und wie sich dies im Rahmen<br />
der ECMAScript-Syntax realisieren lässt: Zunächst sei festgehal-<br />
ten, dass eine diskrete Animation jeweils die Eigenschaft eines Objekts in einem bestimmten Zeitfenster von<br />
einem Ausgans- zu einem zuvor festgelegten Zielwert dynamisch verändern soll. Dies allein ließe sich in<br />
<strong>SVG</strong>- bzw. SMIL-Syntax ja noch sehr einfach realisieren:<br />
<br />
<br />
<br />
Listing<br />
6.5.2.1.1: Animation des x-Radius einer Ellipse in <strong>SVG</strong>. 8<br />
1<br />
vgl. [Watt02] pp.428ff.<br />
2<br />
Aus der Perspektive der Darstellungsfläche also: (Positive) Verschiebung entlang der y-Pixelkoordinate<br />
3<br />
Darüber hinaus sind freilich<br />
noch einige Weitere Aktionen durchzuführen: Die Linien sind zu verlängern etc.<br />
4<br />
In der Regel bezieht sich dies auf die x-, y- und visibility-Eigenschaften.<br />
5<br />
Anm: Schliesslich wird die ECMAScript-Engine ja ebenso zur Steuerung der Animation verwendet und benötigt daher natürlich auch<br />
Daten (in Form von Variablen), in welcher Form diese Anweisungen zu geben<br />
sind.<br />
6<br />
s. 6.5.1<br />
7<br />
s. ebenda.<br />
8<br />
Anm: Im Animate-Tag wurden die für diesen Sachverhalt irrelevanten und ohnehin „obligatorischen“ Attribute attributeType="<strong>XML</strong>"<br />
sowie fill="freeze"<br />
entfernt.