SMIL XML:Construction progressive d'un fichier SMIL

Un article de WikiTuto.

Jump to: navigation, search
  • XML Concepts de base
  1. Historique : de SGML à XML
  2. XML:Mise en oeuvre
  3. Structure d'un document XML
  4. Support par les navigateurs
  • Prise en main d'XML CookTop
  1. XML CookTop généralités
  2. Interface
  3. Exercices
  • Prise en main d'oXygen XML Editor
  1. Généralités
  2. Interface
  3. Fonctionnalités
  4. Exercices
  • Déclarations de Type de Document
  1. Introduction
  2. Types de DTD
  3. Déclarations d'éléments
  4. Déclarations d'attributs
  5. Déclarations d'entités
  • Initiation aux Schéma XML
  1. Introduction
  2. Les premiers pas
  3. Déclarations d'éléments et d'attributs
  4. Les types de données
  5. Espaces de nom
  6. Les dérivations
  7. Diverses autres fonctionnalités
  • Mise en forme à l'aide de feuilles de style XSL
  1. Présentation
  2. Exemples de mises en forme
  • Mise en forme à l'aide de feuilles de style XSL (XSLT)
  1. Les expressions de sélection
  2. XPath
  3. Éléments XSLT
  • Fonctions XPath
  1. Fonctions XPath applicables aux nœuds
  2. Fonctions XPath applicables aux chaînes de caractèress
  3. Fonctions XPath applicables aux nombres
  4. Fonctions booléennes
  5. Autres fonctions
  • Utilisation du DOM et XSLT dynamique
  1. Insertion de code JavaScript dans une page
  2. Utilisation du DOM
  • Synchroniser des contenus multimédia avec SMIL
  1. Généralités
  2. Construction progressive d'un fichier SMIL
  3. Conclusion
  • Un format de dessin vectoriel en XML: SVG
  1. Introduction
  2. SVG de base
  3. Éléments graphiques de base
  4. Structuration: éléments de groupage et références
  5. Transformations
  6. Autres fonctionnalités
  • L'animation dans le SVG
  1. Introduction
  2. Animation de base: l'élément animate
  3. Des animations plus complexes
  • Plus loin que les formulaires HTML: XForms
  1. Généralités
  2. Fonctionnalités des formulaires XForms
  3. Dans la pratique
  4. Pour aller plus loin...
  • Quelques mots sur les Services Web
  1. Généralités
  2. Trouver un service Web
  3. Accéder à un service Web
  4. Récapitulation et inconvénients
Source : Gilles Chagnon

Sommaire

structure

La structure d'un document SMIL ressemble beaucoup à celle d'un document HTML. L'élément racine est <smil>, et il comporte un élément <head> et un élément <body> :

<smil>
  <head>(...)</head>
  <body>(...)</body>
</smil>

On peut ajouter dans l'élément <head> des balises <meta>, comme par exemple <meta name="copyright" content="(...)" />.

Il est également possible d'incorporer dans le prologue du fichier, avant l'élément racine, la déclaration de version XML, ainsi qu'une déclaration de dépendance envers la DTD du W3C :

<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN" "http://www.w3.org/TR/REC-smil/SMIL10.dtd">

La dernière version de la spécification du W3C est la 2.1. Par rapport à la 2.0,qui n'apportait que de petites modifications sur certains éléments, elle ajoute le concept de modularité et l'ajout de nouvelles fonctionnalités plus particulièrement destinées aux mobiles.

Ce cours d'initiation se limite à la version 1.0.

Positionnement

Introduction

Dans le header, doit également être défini l'élément <layout>, dont la fonction est de spécifier la zone dans laquelle les animations doivent être affichées, ainsi que les diverses régions où elles doivent prendre place.

Élément de base

La fenêtre destinée à accueillir l'ensemble des animations est définie par l'élément vide <root-layout/> :

<root-layout width="300" height="200" background-color="blue" title="Animations" />

Cet élément permet de définir par ses attributs width et height la taille de la fenêtre de base, mais également sa couleur de fond, son titre, etc. A l'intérieur de cette fenêtre, tout comme à l'intérieur d'une fenêtre de navigateur, le positionnement d'un objet se fait par rapport au coin supérieur gauche.

Définition des régions

Chaque objet multimédia devra être associé, dans ce cadre général, à uné région qu'il faut donc définir. Cela se fait par l'intermédiaire de l'élément vide <region/> :

<region id="region1" left="75" top="50" width="32" height="32" />

Pour placer ensuite l'image "test.gif", de taille 32x32, dans cette région, il suffit alors de l'insérer dans le body, en spécifiant son affectation à la région. Cela donne au final :

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN" "http://www.w3.org/TR/REC-smil/SMIL10.dtd">
<smil>
  <head>
    <meta name="copyright" content="Jean Dupont" />
    <root-layout width="300" height="200" background-color="blue" title="Animations" />
    <region id="region1" left="75" top="50" width="32" height="32" />
  </head>
  <body>
    <img src="test.gif" alt="image de test" region="region1" />
  </body>
</smil>

Il est possible également de définir le positionnement de la région, non en absolu par rapport à la fenêtre principale comme dans l'exemple précédent, mais en relatif, en utilisant les attributs left="40%" et height="30%", par exemple, qui positionnent le coin supérieur gauche de la région à 40% de la taille totale de la fenêtre principale par rapport à son bord gauche, et à 30% par rapport à son bord supérieur.

z-index

De même qu'en DHTML, il est possible de positionner une région en avant- ou arrière-plan d'une autre, via l'attribut z-index. Plus la valeur de cet attribut est élevée, plus la région est à l'avant-plan. Par exemple

<region id="region1" left="75" top="50" width="32" height="32" z-index="1" />
<region id="region2" left="100" top="175" width="80" height="80" z-index="2" />

Ces deux régions se superposent, mais la région region2 est à l'avant-plan : un objet placé dans cette région apparaîtra devant tout objet de la première.

Ajustement de la taille de l'objet

L'attribut fit de l'élément region permet de définir la manière dont un objet doit la remplir :

  • fit="fill" demande à l'objet de remplir toute la fenêtre ; cela peut entraîner des déformations d'une image, par exemple ;
  • fit="meet" demande à l'objet de s'agrandir éventuellement jusqu'à ce que sa plus grande dimension entre en contact avec les bords de la région ;
  • fit="slice" est le complémentaire de la valeur précédente, puisque cette fois-ci c'est sa plus petite dimension qui est étirée pour entrer en contact avec les bors de la région ;
  • fit="scroll" permet à un objet plus grand que la fenêtre d'y être affiché avec des barres de défilement.

Types d'objets multimédia

On a vu un exemple d'utilisation d'une image avec l'élément img. Il est également possible d'utiliser d'autres types d'objets multimédia :

  • les formats d'images acceptés sont gif et jpeg ;
  • des fichiers audio : wav, MP3, mais aussi des formats plus particuliers comme le format de données audio de Sun. C'est la balise audio ;
  • des fichiers de texte : texte brut avec la balise text, ou bien texte en streaming avec la balise textstream pour les lecteurs Real ;
  • des fichiers vidéo (Real movie, avi, mpeg, mov) avec la balise video.

Synchronisation

Gestion des paramètres temporels d'affichage

On utilise pour cela les attributs begin et dur (pour duration) :

<img src="test.gif" alt="image de test" region="region1" begin="1s" dur="3s" />

Dans cet exemple, l'affichage de l'image débute une seconde après la définition de la région region1, puis l'image disparaît après trois secondes.

Séquence

Il est possible de créer une séquence d'événements, en se servant de la balise seq et des attributs begin et dur. Ainsi...

<seq>
  <img src="test.gif" alt="image de test" region="region1" dur="3s" />
  <img src="test2.gif" alt="image de test" region="region1" dur="3s" begin="1s" dur="7s" />
</seq>

... va afficher dans la région1 tout d'abord test.gif pendant trois secondes, puis la faire disparaître. Une seconde plus tard, test2.gif est affichée, et ce pendant sept secondes. Les séquences vidéo et audio ont un "timer" interne ; la gestion de leur affichage se fait grâce à d'autres attributs (clip-begin, clip-end...), qui permettent de positionner la lecture en différents endroits de la piste. En l'absence de ces attributs, les films et extraits musicaux sont joués dans leur intégralité.

Affichage en parallèle

Il est également possible de faire jouer des objets en parallèle, avec l'élément par.

Exercice 1. Un premier fichier SMIL

Télécharger la correction et l'ouvrir localement, avec tous les fichiers multimédias donnés dans l'énoncé.

Sources

Gilles Chagnon

Boîte à outils
Annuaire gratuitCe site est listé dans la catégorie Informatique : Aide et astuces en informatique Annuaire