20.01.2013 Aufrufe

XML » SVG Presenter - Carto:net

XML » SVG Presenter - Carto:net

XML » SVG Presenter - Carto:net

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!