HOME - SMIL: Version 2 vom 04.04.2005 © Wolfgang von Keitz


Vorwort
Grundlagen
Layout

Zeit

Bild, Text und Ton
SMIL und HTML
Referenz
Beispiele
Anhang
Quellen

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:

  1. 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.
  2. 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:

  1. Unter harter Synchronisation versteht man die strikte Anwendung der Parameter des Zeitkontainers
  2. 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>

zurueck top weiter