X-Git-Url: https://melusine.eu.org/syracuse/G/git/?a=blobdiff_plain;f=doc%2Fpage.md;h=b1816df56fc5ed4e880b358c22541f07876c468a;hb=bb219b859367d3cbc212b5d4ad0dfd3ba6356af5;hp=b9faf2c5138b674f7890e4e769df399e0db44567;hpb=6bfcc0f719cbb35a9126bb408e510ba09daf7d70;p=svganimation.git diff --git a/doc/page.md b/doc/page.md index b9faf2c..b1816df 100644 --- a/doc/page.md +++ b/doc/page.md @@ -2,10 +2,24 @@ @@ -20,21 +34,204 @@ constitué à partir de l'exploration de différents scénarios de présentation de ces animations et des modes de construction des fichiers SVG. +
+

Les différents exemples se charge en cliquant sur le bouton +dédié. Ceci **n'est pas** le comportement par défaut, c'est du code +JavaScript qui permettra de choisir quand l'animation se charge. Il +s'agit +d'éviter de charger toutes les animations présentes sur cette page, +cela serait bien trop lourd.

+

Nous présentons, dans la section XX, le code qui permet de charger +l'animation sur demande.

+
+ ## Installation -Le fichier `SVGAnimation.js` (que l'on supposera dans le répertoire `js`) est à charger dans la page `html` en mettant les lignes suivantes : +Le fichier `SVGAnimation.js` (que l'on supposera dans un répertoire +nommé `js`) est à charger dans la page `html` en mettant les lignes +suivantes : - -La librairie `SVGAnimation.js` dépend de `JQuery`, il faut donc charger charger cette bibliothèque JavaScript avant. -## L'objet `Animation` +## Principe + +Le principe est simple : on dispose d'un ensemble d'images au format +SVG qui constituent, par une suite chronologique, une animation à +visionner. La libraire `SVGAnimation` permet de visionner cette +animation dans une page HTML grâce à JavaScript. + +### La famille d'images + +Les différentes images composant l'animation doivent se nommer avec un +*prefixe* suivi d'un nombre (indice), celui-ci pouvant être +formater de différente façons : + + monfichier-1.svg monfichier-2.svg monfichier-3.svg ... + +ou, autre exemple : + + monfichier-001.svg monfichier-002.svg monfichier-003.svg ... + +Nous verrons comment gérer le formatage de l'indice des images dans +les sections suivantes. + +
+

L'idée d'une telle librairie est venue du fait que le logiciel +MetaPost permet de produire des images SVG, et nous l'utilisons +abondamment pour la production d'animations.

+
+ + +## L'utilisation + +### Côté HTML + +La librairie `SVGAnimation` définit le *prototype* javascript +`Animation`. Pour l'utiliser il faut déclarer une balise HTML `div` +avec un identifiant (`id`) unique. Choisissons pour l'exemple `XXXX`. +À l'intérieur de ces balises, il +faut : + +* une balise `img` contenant un image `svg` qui servira de vignette à + l'animation; +* une balise `div` avec l'identifiant `id="XXXX_message"` où `XXXX` est + l'identifiant de la balise englobante. Dans cette balise *message*, + on y met, si on le souhaite, un message à afficher avant le + chargement de l'animation; +* une balise `div` avec l'identifiant `id="XXXX_boutons"`. + + +En supposant que les images SVG se trouvent dans un répertoire nommé +`svg`, voici un exemple d'une telle structure : + +~~~~~~~ { .html } +
+ animation1 +
Chargement
+
+
+~~~~~~~ + +### Côté JavaScript + +Une fois qu'on a la structure HTML présentée ci-dessus, il est +nécessaire d'ajouter un peu de code JavaScript pour permettre à l'animation +de se jouer. + +#### Construire l'objet `Animation` + +Le *constructeur* du prototype JavaScript s'utilise, pour l'exemple +donné à la section précédente, de la façon +suivante : + +~~~~~~~ { .javascript } +var anim = new Animation('XXXX','svg/ellipsographe-',1,91); +anim.loopOnload(); +~~~~~~~ + +`XXXX` est l'identifiant de la balise `div` HTML *englobante*, +`svg/ellipsographe-` est le préfixe dont on a parlé plus haut, `1` est +l'indice de la première image à animer, et `91` l'indice de la +dernière. + +`anim.loopOnload()` permet le chargement de l'animation. + +Une fois celle-ci chargée, il faut en permettre la lecture qui se fait +grâce à un nouvel objet nommé `Controle`. Ce contrôle s'utilise en +fait comme ceci : + +~~~~~~~ { .javascript } +var anim = new Animation('XXXX','svg/ellipsographe-',1,91); +anim.loopOnload(); +var player = new Controle(anim); +player.connect(); +~~~~~~~ -
- animation1 -
Ellipsographe
-
+Nous verrons par la suite comment personnaliser le contrôle de la +lecture de l'animation. + +Tout ceci n'est toujours pas suffisant car il faut exécuter ce code +JavaScript. Ceci peut être fait grâce à `JQuery` par exemple, en +exécutant ces quatre lignes de code à l'ouverture de la fenêtre : + +~~~~~~~ { .javascript } +$(window).load(function() { + var anim = new Animation('XXXX','svg/ellipsographe-',1,91); + anim.loopOnload(); + var player = new Controle(anim); + player.connect(); +}); +~~~~~~~ + +Bien sûr, ceci nécessite le chargement, dans la page HTML, de la +librairie `JQuery`. + + + + + +#### Le résultat + +Tout ceci donne le code suivant + +~~~~~~~ { .html } + + + + +
+ animation1 +
Chargement...
+
+
+~~~~~~~ + +dont l'affichage est : + +
+ animation1 +
Chargement...
+
+
+ + +Il est possible de différer le chargement de l'animation en créant une fonction Javascript. + +~~~~~~~ { .javascript } +function charge_anim2() { + var a = new Animation('anim2','svg/ellipsographe-',1,91); + a.loopOnload(); + var b = new Controle(a); + b.connect(); +} +~~~~~~~ + +Fonction qui sera liée à l'*événement* `onclick` d'un bouton proposant, à +l'internaute, le chargement de l'animation... + +~~~~~~~ { .html } +
+ animation1 +
Ellipsographe
+
+
+~~~~~~~ + +On peut en profiter pour adapter le *style* des éléments englobants. + +
+ animation1 +
Ellipsographe
+
@@ -47,6 +244,4 @@ La librairie `SVGAnimation.js` dépend de `JQuery`, il faut donc charger charger ### `SVGPlayerButtons.js` - - - +## Exemples d'utilisation