TUTORIELS 
SMIL : Première approche

Page 1 | 2

La spécification du W3C permettant de gérer des contenus multimédia directement dans le navigateur semble un peu mal aimée. A tort.
 (28 novembre 2003)
 
Les balises de base
SMIL tourne principalement autour de deux balises : <par> et <seq>, qui font respectivement référence à des actions en parallèles (en même temps) ou en séquence (l'une après l'autre). Simplement, les éléments devant être diffusés en même temps seront placés dans une même balise <par>, et ceux devant être diffusés les uns après les autres, dans une même balise <seq>.

<body>
  <seq>
    <img src="/img/monImage1" dur="1s" />
    <img src="/img/monImage2" dur="1s" />
    <img src="/img/monImage3" dur="1s" />
  </seq>
</body>

Nos trois images vont ici s'afficher les unes après les autres, chacune pendant une seconde, au même emplacement (l'utilisation des CSS est possible pour tout ce qui concerne la mise en page...). L'attribut dur="" nous permet de spécifier le temps durant lequel l'élément sera visible (ici, une seconde pour chaque). Etant donné que nous sommes dans une séquence (balise <seq>), chaque élément ne s'affiche qu'une fois que l'élément précédent a terminé de s'afficher.
Nous avons donc ici un galerie avec défilement automatique très simple à réaliser ! Mais elle ne boucle pas : une fois la dernière image affichée, plus rien ne se passe. Pour relancer la galerie, on ajoute un attribut repeatCount="indefinite" à la balise <seq> : <seq repeatCount="indefinite">. La galerie ne s'arrêtera plus...

Revoyons notre code précédent en remplaçant <seq> par <par> :

<body>
  <par>
    <img src="/img/monImage1" dur="1s" />
    <img src="/img/monImage2" dur="1s" />
    <img src="/img/monImage3" dur="1s" />
  </par>
</body>

Nos images ne sont plus en séquence mais en parallèle : toutes les trois s'affichent côte à côte pendant une seconde, puis disparaissent. Si on ajoutait le repeatCount="indefinite", on obtiendrait un affichage tout ce qu'il y a de plus HTML-esque : trois images statiques, l'une à coté de l'autre. Mais SMIL nous permet d'animer un peu cela :

<body>
  <par repeatCount="indefinite">
    <img src="/img/monImage1" dur="1s" begin="1s" />
    <img src="/img/monImage2" dur="1s" begin="2s" />
    <img src="/img/monImage3" dur="1s" />
  </par>
</body>

Discutez en sur les forums

Nous avons maintenant défini le début de l'affichage de chacune de nos trois images: mongImage1 se lance au bout d'une seconde, monImage2 au bout de deux secondes, et monImage3 dès le lancement de la boucle. Toutes ne sont plus visibles au bout d'une seconde : nous avons une guirlande d'images du plus bel effet... en tout cas plus rapide à réaliser qu'en faisant appel à JavaScript.

Ce n'est là qu'un petite portion des possibilités de SMIL, qui compte dans sa seconde version 9 modules spécifiques : animation, contrôle du contenu, mise en page, liaison, gestion du temps, synchronisation, effets de transition... Nous vous les présenterons individuellement lors de prochains articles.

Page 1 | 2

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page