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 182<br />

Der in [Listing 6.5.2.1.1] dargestellte <strong>SVG</strong>-Code würde beispielsweise die rx-Eigenschaft (also den Radius<br />

zur X-Achse)<br />

der übergeord<strong>net</strong>en Ellipse in einem Zeitrahmen von 6 Sekunden (Zeitversatz: 3 Sekunden)<br />

vom Startwert 48º zeitkontinuierlich dem Zielwert annähern.<br />

Weitaus komplizierter gerät dieser Sachverhalt jedoch, wenn verschiedene<br />

Attribute ein- und desselben Objekts<br />

parallel verändert werden müssen: So erfordert etwa die einfache „Vergrößerung“ eines Objektes wie<br />

etwa in [Abb.6.5.2.1.1] die zeitgleiche Manipulation gleich 4 verschiedener Eigenschaften des Elements: So<br />

muss sowohl die Breite und die Höhe des Objekts entsprechend des angegebenen Skalierungsfaktors geändert,<br />

wie auch das Objekt in x- und y-Richtung verschoben werden, damit es „zentriert“ bleibt und nicht<br />

einfach nach „rechts-unten“ skaliert wird:<br />

Abb. 6.5.2.1.1: „Zoom“-<br />

Funktion eines Bildsymbols<br />

bei gleichzeitiger<br />

Manipulation der x-,<br />

y-, height- und width-<br />

Attribute<br />

Da dies, wie bereits<br />

eingangs ausgeführt,<br />

nicht mehr im Rahmen<br />

der durch S VG<br />

bzw. S MIL direkt bereitgestellten<br />

Syntax<br />

möglich ist, setzt sich das daraufhin für den <strong>XML</strong> <strong>»</strong> <strong>SVG</strong> <strong>Presenter</strong> entwickelte Animations-Framework aus<br />

zwei maßgeblichen Objekten zusammen: Dem Animations-Objekt ( AniObject),<br />

welches sowohl das zu<br />

animierende Objekt wie auch die bereits erwähnten Animations-Eigenschaften (Animations-Dauer, zu verändernde<br />

Eigenschaft), wie auch einen Animations-Tracker ( AniTracker), der die parallele Animation<br />

mehrerer solcher AniObjects ermöglicht. Der ECMAScript-Sprachumfang stellt hierfür etwa die Befehle<br />

setTimeout und setInterval bereit, mit deren Hilfe nun der AniTracker innerhalb beliebiger Zeitabstände<br />

die entsprechend im Tracker<br />

befindlichen AnimationsObjekte entsprechend ihrem Zielwert annähert.<br />

Ist eine Anim ation demnach abgeschlossen, so wird das entsprechende AniObject aus der Tracker-<br />

Liste gelöscht – ist auch diese leer, so ruft sich der Tracker nicht mehr selbst auf (rekursives Abbruchskriterium)<br />

und stellt seine Aktivitäten ein (so genannter idle-Zustand). Die Skalierungsfunktion aus [Abb.<br />

6.5.2.1.1] lässt sich beispielsweise mithilfe dieser beiden Objekte nun relativ einfach realisieren:<br />

at = new AniTracker(); // Tracker initialisieren<br />

svgObject = evt.getTarget(); // Zu animierendes Objekt ermitteln<br />

...<br />

var newX = getVal(obj, "x") - (oldWidth * (factor-1)) / 2;<br />

var newY = getVal(obj, "y") - (oldHeight * (factor-1)) / 2;<br />

xAni = new AniObject(svgObject, "x", newX, duration);<br />

yAni = new AniObject(svgObject, "y", newY, duration);<br />

widthAni = new AniObject(svgObject, "width", oldWidth * factor, duration);<br />

heightAni = new AniObject(svgObject, "height", oldHeight * factor, duration);<br />

...<br />

at.add(new Array(xAni, yAni, widthAni, heightAni));<br />

if(at.isIdle()) at.track();<br />

Listing 6.5.2.1.2: Skalierungsfunktion mithilfe<br />

von AniObject und AniTracker.<br />

Neben der freilich eher als „Spielerei“ aufzufassenden „Zoom“-Funktion,<br />

die beispielsweise zur Vergrößerung<br />

von Icon-Dateien (im Prototyp momentan etwa eingangs verwendet) dienen könnte, kommt das A-<br />

nimations-Framework im Rahmen der eigentlichen Präsentation etwa bei den optischen „Fades“ (bei Aus-<br />

wahl eines Items wird<br />

die Schrift weiß und der teiltransparente, schwarze Verlaufsbalken langsam eingeblendet)<br />

der Item-Selektion zum Einsatz:

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!