3. Zeitliche Steuerung und Synchronisation
3.6. Das Zeitmodul von SMIL 2.0
SMIL arbeitet nach einem wohldefinierten Zeitmodul,
das hier ausführlich beschrieben werden soll. Es ist Teil des Zeit-
und Synchronisationsmoduls.
Die Steuerung und Kontrolle des zeitlichen Verhalten
eines Medienelements erfolgt über Attribute des Medienelements,
während die Synchronisation mehrerer Medienlemente über
spezifische Synchronisationselemente erfolgt. Medienelemente können
Audios, Videos, Bilder, Animationen, Texte und HTML-Seiten sein.
Synchronisationselemente definieren Zeitcontainer, die Elemente
bezogen auf deren zeitliche Präsentation zu Gruppen zusammenfassen.
Synchronisationselemente und zeitbezogene Attribute von Medienelementen
definieren den Beginn und die Dauer einer Präsentation über
zeitbezogene Attributwerte. Sie legen ferner fest, ob und wen
ja wie oft ein Element oder eine Gruppe von Elementen wiederholt
werden soll.
Das SMIL-Zeitmodell kennt zwei Begriffe für
die Dauer einer Präsentation: Die einfache Dauer
und die aktive Dauer:
- Die einfache Dauer ist die Präsentationsdauer,
die durch das begin- und das dur-Attribut festgelegt wird; Angaben
zu Wiederholungen und Füllern sind nicht weiter berücksichtigt.
- Die aktive Dauer ist die Präsentationsdauer,
die das Medienobjekt tatsächlich präsentiert wird.
Wurden keine Wiederholungen und kein Ende der Präsentation
spezifiziert, entspricht die aktive Dauer der einfachen Dauer.
Füller sind in der aktiven Dauer nicht berücksichtigt.
Die Präsentationszeit einer Gruppe von Medienobjekten
wird durch den Zeitcontainer des entsprechenden Synchronisationselements
bestimmt. Es wird zwischen harter und weicher
Synchronisation unterschieden:
- Unter harter Synchronisation versteht man die strikte
Anwendung der Parameter des Zeitkontainers
- Die weiche Synchronisation erlaubt eine den Übertragungsverhältnissen
angepasste Synchronisation der Medienobjekte.
Nachfolgend werden zunächst die Attribute der
Medienelement besprochen, die sich auf die zeitliche Steuerung
der Medienobjekte beziehen. Anschliessend werden die Synchronisationslemente
besprochen, die sich auf die zeitliche Gruppierung von Medienobjekten
beziehen.
3.6.1. Das begin-Attribut
Der Präsentationsbeginn eines Medienobjekts
läßt sich über das begin-Attribut des Medienelements
steuern. Folgende Attributwerte sind möglich:
- einfacher Zeitwert
- mehrfache Zeitwerte, Zeitwertlisten
- Startpunkt
- allgemeiner Synchronisationswert
- sequentieller Synchronisationswert
- Ereigniswert
- Wiederholungswert
- Zeicheneingabe
- Medienmarker
- Uhrzeit
Mit:
<img id="smily" src="bild2.jpg" region="region_1" begin="5s" dur="5s" />
wird das Bild bild2jpg nach 5 Sekunden für
die Dauer von 5 Sekunden präsentiert.
Zeitangaben können nach folgendem Muster erfolgen:
Clock-value ::= ( Full-clock-value | Partial-clock-value | Timecount-value
)
Full-clock-value ::= Hours ":" Minutes ":"
Seconds ("." Fraction)?
Partial-clock-value ::= Minutes ":" Seconds ("."
Fraction)?
Timecount-value ::= Timecount ("." Fraction)? (Metric)?
Metric ::= "h" | "min" | "s" | "ms"
Hours ::= DIGIT+; any positive number
Minutes ::= 2DIGIT; range from 00 to 59
Seconds ::= 2DIGIT; range from 00 to 59
Fraction ::= DIGIT+
Timecount ::= DIGIT+
2DIGIT ::= DIGIT DIGIT
DIGIT ::= [0-9]
Beispiel für vollständige Zeitangaben:
02:30:03 = 2 Stunden, 30 Minuten und 3 Sekunden
50:00:10.25 = 50 Stunden, 10 Sekunden und 250 Millisekunden
Beispiel für unvollständige aber gültige Zeitangaben:
02:33 = 2 Minuten und 33 Sekunden
00:10.5 = 10.5 Sekunden
Beispiel für einfache Zeitangaben:
3.2h = 3.2 Stunden= 3 Stunden und 12 Minuten
45min = 45 Minuten
30s = 30 Sekunden
5ms = 5 Millisekunden
12.467 = 12 Sekunden und 467 Millisekunden
Diese einfach zu handhabend erscheinenden Attribute
können eine Vielzahl von Attributwerten bzw. Attributwertvariationen
besitzen. Die einfachste Veränderung zum obenstehenden Beispiel
lautet:
begin="5s;12s"
dur="5s"
Statt eines einzelnen Attributwerts wurde eine Attributwertliste
bestehend aus zwei Zeitangaben (5s und 12s) angegeben. Die Attributwertliste
führt dazu, dass das Bild zweimal für die Dauer von
5 Sekunden präsentiert wird; das erste Mal 5 Sekunden nach
Beginn der Präsentation, und das zweite Mal 12 Sekunden nach
Beginn der Präsentation. Die einzelnen Zeitangabe sind durch
ein Semikolon getrennt.
Ein weiterer Attributwert kann ein Synchronisationswert
sein. Mit
src="bild2.jpg"
begin="neuesSchloss.begin+2s"
dur="5s"
wird der Beginn der Präsentation eines Bildes
mit der Präsentation des Bildes „neuesSchloss“
in Beziehung gesetzt; zwei Sekunden nach „neuesSchloss“
erscheint „bild2.jpg“. Die allgemeine Syntax für
diese Zeitangabe lautet:
begin=idwert.begin+Zeitangabe
Statt begin kann auch end eingesetzt werden; in
diesem Fall wird nicht der Präsentationsbeginn des mit idwert
spezifiezierten Objekts sondern mit dessen Präsentationsende
als Ausgangspunkt für die Berechnung des Präsentationsbeginns
des im src-Attributs genannten Objekts genommen. Und statt + kann
auch – benutzt werden, in diesem Fall wird die angegebene
Zeit vom Präsentationsbeginn bzw. Präsentationsende
des unter idwert angegebenen Objekts nicht addiert sondern subtrahiert.
Als weiterer Attributwert können Ereignisse
angegeben werden. Ereignisse können vom Nutzer geforderte
Eingaben (z.B. ein Mausklick) oder externe Ereignisse sein. Die
allgemeine Syntax lautet in diesem Fall:
begin=idwert.ereignis+Zeitangabe
src="movie.mpg"
begin="click"
dur="media"
In diesem Beispiel beginnt das Video erst, wenn
der Nutzer einen Mausklick eingibt. Mögliche Ereignisse oder
events sind im DOM (document objekt model) definiert.
Ferner können Wiederholungswerte als Attributwerte
benutzt werden. In diesem Fall wird das obenstehende Schema wie
folgt geändert:
begin=idwert.repeat(n)+Zeitangabe
Die Anzahl der Wiederholungen wird in Klammern nach
repeat angegeben.
Statt Zeitangaben können auch Medienmarker
als Attributwert benutzt werden. In diesem Fall ändert sich
das obenstehende Schema wie folgt:
begin=idwert.markerMarkername
Neben den bislang Zeitangaben in Sekunden oder Minuten
kann auch direkt die Uhrzeit für den Präsentationsbeginn
angegeben werden. Dies geschieht mit
begin=wallclock(Uhrzeit)
DateTime ::= Date "T" WallTime
Date ::= Years "-" Months "-" Days
WallTime ::= (HHMM-Time | HHMMSS-Time)(TZD)?
HHMM-Time ::= Hours24 ":" Minutes
HHMMSS-Time ::= Hours24 ":" Minutes ":" Seconds
("." Fraction)?
Years ::= 4DIGIT;
Months ::= 2DIGIT; range from 01 to 12
Days ::= 2DIGIT; range from 01 to 31
Hours24 ::= 2DIGIT; range from 00 to 23
4DIGIT ::= DIGIT DIGIT DIGIT DIGIT
TZD ::= "Z" | (("+" | "-") Hours24
":" Minutes )
Das T in DateTime bedeutet „Zeitsone“.
Beispiel für einen Präsentationsbeginn
um Mitternacht des 1. Januar 2000 UTC
begin="wallclock(2000-01-01Z)"
begin="wallclock( 2000-01-01T00:00Z )"
begin="wallclock( 2000-01-01T00:00:00Z )"
begin="wallclock( 2000-01-01T00:00:00.0Z )"
begin="wallclock( 2000-01-01T00:00:00.0Z )"
begin="wallclock( 2000-01-01T00:00:00.0-00:00 )"
Im folgenden Beispiel wird der Präsentationsbeginn
auf 8 Uhr morgens festgelegt; die Zeitangabe ist ortsunabhängig;
d.h. 8 Uhr morgens gilt, wo immer die Präsentation stattfindet.
begin="wallclock( 08:00 )"
Eine weitere Möglichkeit besteht darin, den
Attributert „indefinite“ anzugeben. In diesem Fall
wird der Präsentationsbeginn durch einen Link oder einen
beginElement(0)-call eingeleitet.
3.6.2. Das dur-Attribut
Das dur-Attribut gibt die einfache Präsentationsdauer
eines Medienobjekts an. Als Attributwerte kann folgendes angegeben
werden:
- einfacher Zeitwert; einfache Zeitwerte entsprechen den Attributwerten
des begin-Attributs.
- „media“, spezifiziert die Präsentationsdauer
als den inneren Zeitwert (z.B. Länge eines Videos)
- „indefinite“
Bei Fehlern in der Attributwertangabe wird das Attribut
ignoriert.
3.6.3. Das end-Attribut
Das end-Attribut gestattet es, das Präsentationsende
respektive die aktive Präsentationsdauer eines Medienobjekts
zu bestimmen. Als Attributwerte können die selben Werte wie
bei begin benutzt werden. Fehlen sowohl die Angaben zur Dauer
wie zum Ende der Präsentation, wird die Präsentationsdauer
als aktive Präsentationsdauer benutzt.
Soll neben der inneren Präsentatiosdauer ein
weiteres end-Kriterium definiert werden, wird der dur-Attributwert
„media“ benutzt. Im folgenden Beispiel wird „click“
als end-Attributwert angegeben:
<video
src="movie.mpg"
.... end="click"
dur="media"
/>
Das Video wird solange präsentiert, bis es
an sein natürliches Ende gekommen ist, oder bis es durch
einen Mausklick beendet wird.
Im folgenden Beispiel werden mehrere Videos präsentiert.
<video
src="movie.mpg"
.. end="click;next.click"
dur="5s"
repeatCount="3"/>
<video
src="movie.mpg"
.. end="click;next.click"
dur="5s"
repeatCount="3"/>
<video
src="movie.mpg"
.. end="click;next.click"
dur="5s"
repeatCount="3"/>
Ein Video dauert 5 Sekunden; es wird dreimal wiederholt,
bis das nächste Video beginnt, oder bis ein Mausklick eingegeben
wird, oder bis auf ein anderes Video geklickt wird.
3.6.4. Das min- und max-Attribut
Das Attribut min spezifiziert die minimale aktive
Präsentationsdauer. Als Attributwerte können einfache
Zeitwerte und „media“ benutzt werden. Als Voreinstellung
gilt 0 Sekunden.
Das Attribut max spezifiert die maximale aktive
Präsentationsdauer. Als Attributwerte können einfache
Zeitwerte, „media“ und „indefinite“ benutzt
werden. Im folgenden Beispiel wird die maximale Präsentationsdauer
auf 10 Sekunden festgelegt:
<video
src="movie.mpg"
.. max="10s"
/>
3.6.5. Das repeatCount- und repeatDur-Attribut
Ein Wiederholungsattribut wiederholt die Präsentation
eines Medienobjekts. Genauer formuliert: Die einfache Präsentation
eines Medienobjekts wird wiederholt.
Mit repeatCount wird die Zahl der Wiederholungen
festgelegt. Das Attribut kann eine Zahl oder „indefinite“
als Attributwert besitzen. Neben ganzzahligen Werten können
auch Dezimalwerte benutzt werden. Beispiel:
<video
src="movie.mpg"
.. repeatCount="0.5"
/>
Mit repeatDur wird die Dauer der Wiederholung angegeben.
Als Attributwert kann eine Zeitangabe oder „indefinite“
verwendet werden. Beispiel:
<video
src="movie.mpg"
.. repeatDur="5s"
/>
Das repeat-Attribut, das wir aus SMIL 1.0 kennen,
wird in SMIL 2.0 nicht weiter verwendet.
3.6.6. Das fill-Attribut
Das fill-Attribut steuert das Verhalten des Medienobjekts
nach Ende der aktiven Präsentation. Folgende Attributwerte
können benutzt werden:
remove - Das Objekt wird nach Ende der
aktiven Präsentation aus dem Präsentationsbereich entfernt.
freeze -Das Objekt wird am Ende der Präsentation„eingefroren“.
hold -Derselbe Effekt wie freeze, bis zum Ende des Zeitcontainers.
transition - Derselbe Effekt wie freeze bis zum Ende
der Überggangsphase.
auto - Das Objekt wird in Abhängigkeit der dur-,
end-, repeatCount- oder repeatDur-Attribute
behandelt; wurde ein entsprechendes Attribut definiert, bleibt
das Objekt bis zum Ende der angegebenen Zeit eingefroren. Ist
kein entsprechendes Attribut definiert, wird das Objekt nach dem
Ende der aktiven Präsentation entfernt (remove).
default wird vom fillDefault-Attribut bestimmt.
3.6.7. Das fillDefault-Attribut
Das fillDefault-Attribut legt die Voreinstellung
des fill-Attributs fest. Neben den bereits aus dem fill-Attribut
bekannten Werten remove, freeze, hold, transition und auto kann
auch der Wert inherit benutzt werden:
inherit - Der fill-Attributwert wird vom
übergeordneten Element übernommen. Gibt es kein übergeordnetes
Element ist der Wert „auto“.
3.6.8. Das restart-Attribut
Mit dem restart-Attribut können Bedingungen
für den Neustart der Präsentation eines Medienobjekts
gesetzt werden. Der Neustart kann erfolgen durch:
begin, wenn ein Ereignis definiert wurde,
und das Ereignis wiederholt eintritt;
begin, wenn ein syncbase-Wert angegeben wurde und das
syncbase-Element neu startet;
beginElement(), wenn das DOM beginElement mehrfach aufgerufen
wird.
Das restart-Attribut besitzt folgende Attributwerte
:
always - Die Präsentation des Elements
kann immer neu gestartet werden.
whenNotActive - Die Präsentation kann nur gestartet
werden, wenn das Element nicht gerade präsentiert wird.
never - Die Präsentation kann nicht neu gestartet
werden.
default - Die Voreinstellung wird vom defaultRestart-Attribut
bestimmt.
Beispiel:
<video
src="movie.mpg"
.. begin="bar.click"
end="bar.click"
restart="whenNotActive"
/>
In dem oben stehenden Beispiel wird erreicht, dass
die Präsentation des Elements nur dann durch einen Mausklick
neu gestartet ist, wenn es nicht bereits präsentiert wird.
3.6.9. Das restartDefault-Attribut
Mit dem restartDefault-Attribut wird die Voreinstellung
für das restart-Attribut festgelegt. Neben den vom restart-Attribut
bekannten Werten always, whenNotActive und never kann auch der
Wert inherit benutzt werden.
inherit - Der restart-Attributwert wird
vom übergeordneten Element übernommen. Gibt es kein
übergeordnetes Element ist der Wert „always“.
3.6.10. Das syncBehavior-, syncTolerance- und syncMaster-Attribut
Das synchBehavior-Attribut definiert die Synchronisation
eines Medienelements. Das Attribut besitzt folgende Attributwerte:
canSlip Erlaubt dem Element ein eigenständiges Zeitverhalten.
locked Bindet das Element sychron an den Zeitcontainer.
indipendent Das Element besitzt eine eigene Zeitschiene.
default Wert wird durch das defaultSyncBehavior-Attribut bestimmt.
independent ist äquivalent zu canSlip und syncMaster=“true“
Das defaultSyncBehavior-Attribut kann die Werte canSlip, locked,
indipendent und inherit annehmen.
Das syncTolerance-Attribut definiert die Synchronisationstoleranz
eines Elements. Das Attribut wird nur dann ausgewertet, wenn unter
syncBehavior der Wert locked benutzt wurde. Es kann folgende Attributwerte
annehmen:
Zeitwert Es wird eine Toleranzzeit angegeben.
default Der Wert wird durch das syncToleranceDefault-Attribut
bestimmt.
Das defaultSyncTolerance-Attribut kann die Werte Zeitwert und
inherit annehmen.
Das syncMaster-Attribut ist ein Bool´sches Attribut, das
andere Elemente eines Zeitcontainers anweist, sich nach dem als
syncMaster festgelegten Element auszurichten. Es kann die Werte
true oder false besitzen. Voreinstellung ist false.
3.6.11. Das timeContainer-Attribut
Das timeContainer-Attribut erlaubt es, einem XML-Sprachelement
das Verhalten eines Zeitcontainers zuzuweisen. Als Beispiel mag
eine geordnete Liste eines HTML-Dokuments gelten. Dem entsprechenden
HTML-Element <ol>...</ol> kann mit dem timeContainer-Attribut
dynamisches Verhalten zugewiesen werden, sodass die einzelnen
Listenelemente entweder alle zur selben Zeit präsentiert
werden, oder nacheinander in der entsprechenden Reihefolge erscheinen,
usw. Das Attribut besitzt folgende Attributwerte:
par - Definiert einen parallelen Zeitcontainer.
seq - Definiert einen sequentiellen Zeitcontainer.
excl - Definiert einen exklusiven Zeitcontainer.
none - Definiert keinen Zeitcontainer (Voreinstellung).
3.6.11. Das timeAction-Attribut
Das timeAction-Attribut steuert das formale Design
der Präsentation eines Elements bezogen auf sein zeitliches
Verhalten. Das Attribut besitzt folgende Attributwerte:
intrinsic - Die innere Zeitschiene bestimmt
die Präsentation (Voreinstellung).
display - Die Zeitschiene bestimmt das Design entsprechend
Stylesheets.
visibility - Die Zeitschiene bestimmt, ob das Element
sichtbar wird; das Design ist nicht weiter tangiert.
style - Die Zeitschiene bestimmt die Anwendung eines
internen style-Attributs.
class:classname - Die Zeitschiene bestimmt die Integration
des spezifizierten classname in die Menge der Klassen eines Elements.
Die folgenden Beispiele sollen die Anwendung des
timeAction-Elements verdeutlichen. Beispiel 1: Der im Element
eingeschlossene Text wird für 3 Sekunden sichtbar:
<span
timeAction="visibility"
begin="3s"
dur="5s"
/> Zeige
diesen Text 5 Sekunden
</span>
Beispiel 2: Die einzelnen Listenelemente der geordneten
Liste werden für jeweils 5 Sekunden sichtbar. Die Präsentation
der Liste wird unendlich lange wiederholt.
<ol
timeContainer="seq"
repeatDur="indefinite"
>
<li
timeAction="display"
dur="5s"
> Dies
ist die erste Zeile
</li>
<li
timeAction="display"
dur="5s"
> Dies
ist die zweite Zeile
</li>
<li
timeAction="display"
dur="5s"
> Dies
ist die dritte Zeile
</li>
</ol>
Beispiel 3: Für 5 Sekunden erscheint nach einem
focus-Ereignis ein rotes Label bzw. ein grünes Label
<form>
<label
for="select
red" begin="focus"
timeAction="style"
dur="5s"
style="color:red;
font-weight:bold" >
Ein rotes Label
</label>
<input
id="select
red " .... />
<label
for="select
green " begin="focus"
timeAction="style"
dur="5s"
style="color:green;
font-weight:bold" >
Ein grünes Label
</label>
<input
id="select
green " .... />
</form>

|