3. Zeitliche Steuerung und Synchronisation
3.4. Ereignisbasierte Synchronisation
In den vorausgegangenen Beispielen wurde die Synchronisation
von Objekten entweder über eine klar definierte Zeitschiene
oder über Objektgruppierungen und Objektfolgen gesteuert.
Bei der ereignisbasierten Synchronisation wird die Präsentation
eines Medienobjekts oder einer Gruppe von Objekten vom Eintreten
eines bestimmten Ereignisses abhängig gemacht. Unter einem
Ereignis versteht man beispielsweise den Beginn oder das Ende
der Präsentation eines Medienobjekts oder einer Gruppe von
Objekten. Ein weiteres denkbares Ereignis ist der Click auf ein
Medienobjekt.
3.4.1. Ereignisbasierte Synchronisation von Medienobjekten -
Die Zeit als Ereignis
Bei der ereignisbasierten Synchronisation von Medienobjekten
wird z.B. der Beginn oder das Ende der Präsentation eines
Medienobjekts vom Beginn oder dem Ende der Präsentation eines
anderen Medienobjekts anhängig gemacht. Die ereignisbasierte
Synchronisation von Medienobjekten kennt drei Varianten, die mit
folgender Syntax spezifiziert werden:
- Beginne die Präsentation eines Objekts, wenn wenn die Präsentation eines anderen Objekts begonnen wird:
<Medienelementtag src="..." begin="id(specifiedId)(begin)" />
Im Medienelement wird zunächst durch das src-Attribut das Medienobjekt spezifiziert, das präsentiert werden soll. Es folgt dann das begin-Attribut, in dem festgelegt wird, wann das im src-Attribut spezifizierte Medienobjekt präsentiert werden soll. Der Wert des begin-Attributs wird durch "id" eingeleitet; es folgen in der ersten Klammer die eindeutige Benennung des Objekts, von dessen Präsentationsbeginn die Präsentation des im src-Attribut spezifizierten Medienobjekts abhängig gemacht wird. In der zweiten Klammer wird die Art des Ereignisses festgelegt, von dem der Präsentationsbeginn des im src-Attribut spezifizierten Medienobjekts abhängig gemacht wird. In diesem Fall lautet die Art des Ereignisses "begin".
- Starte ein Objekt 3 Sekunden nach einem anderen Objekt:
<Medienelementtag src="..." begin="id(specifiedId)(3s)" />
In diesem Fall ändert sich die Angabe in der zweiten Klammer des begin-Attributs; jetzt wird in der zweiten Klammer die Zeit spezifiziert "3 Sekunden", die vergehen soll, bis das im src-Attribut spezifizierte Medienobjekt präsentiert wird.
In dem folgenden Beispiel wird "bild2.jpg" 2 Sekunden nach dem Start von "bild.jpg" eingeblendet.
<smil>
<head>
<layout>
<root-layout width="300" height="300"
background-color="white" />
<region id="bild1" left="25" top="25"
width="216" height="181" />
<region id="bild2" left="125" top="125"
width="216" height="181" />
</layout>
</head>
<body>
<par>
<img src="bild.jpg" region="bild1" id="me" begin="4s" />
<img src="bild2.jpg" region="bild2" begin="id(me)(2s)" />
</par>
</body>
</smil>
- Starte ein Objekt, wenn ein anderes Objekt endet:
<Medienelementtag src="..." begin="id(specifiedId)(end)" />
Auch in diesem Fall ändert sich die Angabe in der zweiten Klammer des begin-Attributs. Jetzt wird der Wert "end" eingetragen.
3.4.2. Ereignisbasierte Synchronisation einer <par>-Objektgruppe
Mit der ereignisbasierten Synchronisation einer <par>-Objektgruppe wird die Synchronisation mehrerer Medienobjekte geregelt. Wird keine weitere Regelung getroffen, endet die simultane Präsentation der Medienobjekte der Objektgruppe, wenn die Präsentation des Objekts beendet ist, das die längste Präsentationszeit besitzt. Mit dem endsync-Attribut des <par>-Elements kann dies geändert werden. Folgende Varianten sind möglich:
- Die Präsentation der Gruppe endet, wenn die Präsentation des zeitlich ersten Objekts beendet wird. In diesem Fall lautet der Wert des endsync-Attributs "first":
<par endsync="first"
...
</par>
- Die Präsentation der Gruppe endet, wenn die Präsentation des zeitlich letzten Objekts beendet ist. In diesem Fall lautet der Wert des endsync-Attributs "last".
<par endsync="last"
...
</par>
Da dieser Fall bereits voreingestellt ist, kann die Angabe des endsync-Attributs entfallen.
- Die Präsentation der Gruppe endet, wenn die Präsentation eines bestimmten Objekts beendet ist. In diesem Fall muss spezifiziert werden, um welches Objekt es sich handelt. Dies geschieht wie folgt:
<par endsync="id(clipid)"
...
</par>
Mit "clipid" wird die id des Objekts spezifiziert, von dessen Präsentationsende das Präsentationsende der Gruppe anhängig gemacht wird.
3.4.3. Ereignisbasierte Synchronisation einer <excl>-Objektgruppe - Interaktivität mit SMIL
Mit Hilfe des <excl>-Elements lässt sich
eine zeitunabhängige Synchronisation von Medienobjekten realisieren.
Als Ereignis wird dabei der Click auf eine Medienobjekt verstanden.
In diesem Fall kann die Medienpräsentation interaktiv gestaltet
werden. Dieser Anwendungsfall soll an einem einfachen Beispiel
verdeutlicht werden. In dem folgenden Beispiel: wird das zweite Bild erst dann gezeigt, wenn auf das erste Bild geclickt wird. Zurück zum ersten Bild
gelangt man durch einen weiteren Click mit der Maustaste.
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<head>
<layout>
<root-layout width="300" height="300"
background-color="white" />
<region id="bild" />
</layout>
</head>
<body>
<excl>
<img src="bild2.jpg" id="bild1" region="bild"
begin="0s; bild2.activateEvent" dur="indefinite" />
<img src="bild.jpg" id="bild2" region="bild"
begin="bild1.activateEvent" dur="indefinite" />
</excl>
</body>
</smil>
Eine weitere Möglichkeit der Interaktivität
ergibt sich mit dem acesskey-Wert. Das Ereignis für
begin und end der Präsentation eines Objekts
kann durch die Eingabe eines Wertes (Buchstabe, Zahl) gesetzt
werden. In dem folgenden Beispiel: wird das zweite Bild erst gezeigt, wenn der Wert "w" durch
drücken der entsprechenden Taste der Tastatur eingegeben wird. Die Präsentation des zweiten Bildes wird mit der Eingabe von "e" beendet.
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<head>
<layout>
<root-layout width="300" height="300"
background-color="white" />
<region id="bild" />
</layout>
</head>
<body>
<excl>
<img src="bild2.jpg" id="bild1" region="bild"
begin="0s" dur="indefinite" />
<img src="bild.jpg" id="bild2" region="bild" begin="accesskey(w)"
end="accesskey(e)" />
</excl>
</body>
</smil>
Als Werte für begin und end
können neben klassischen Zeitwerten auch ereignisorientierte
Werte wie offset-Werte, sycnbase-Werte, event-Werte, repeat-Werte,
accesskey-Werte, media-marker-Werte und indefinite angegeben werden.
3.4.5. Ereignisbasierte Synchronisation einer <excl>-Objektgruppe
- Das <priorityClass>-Element
Mit dem <priorityClass>-Element können
Medienobjekte einer <excl>-Objektgruppe zu Klassen zusammengefasst
und in eine hierarchische Abhängigkeit gebracht werden. Beispiel:
<excl>
<priorityClass>
<img src="..." id="bild1" />
<img src="..." id="bild2" />
</priorityClass>
<priorityClass>
<img src="..." id="bild3" />
<img src="..." id="bild4" />
</priorityClass>
</excl>
Mit der Reihenfolge der Prioritätsklassen wird die Hierarchie
zwischen den Medienobjekten festgelegt. Die Bilder 1 und 2 sind
in der ersten und damit höheren Prioritätsklasse während
sich die Bilder 3 und 4 in der zweiten und damit niedrigeren Klassen
befinden. Die Objekte der ersten Klasse werden auch peers genannt.
Das Verhalten der Objekte in der peers-Klasse kann mit Hilfe der
Werte defer, never, pause und stop gesteuert werden. Mit
<priorityClass peers="pause" >
<video src="..." id="video1" />
<video src="..." id="video2" />
</priorityClass>
wird erreicht, dass video1 nur auf Pause gesetzt wird und nicht
gestoppt wird, wenn es durch video2 unterbrochen wird.

|