HOME - SMIL: Version 2.0 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.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:

  1. 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".


  2. 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.
  3. <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>

  4. 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:

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


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


  3. 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.

zurueck top weiter