X-Git-Url: https://melusine.eu.org/syracuse/G/git/?a=blobdiff_plain;f=doc%2Fpage.md;h=33e08d51b6d79ffb0d148299fc756e171cabf0c5;hb=f1b6847f4fde160a3b56c252201670205885f932;hp=a77c3863b4b9f4fcf5fd956ca4fb51515cfc1079;hpb=063e35eea0756d210c9dae72960351f16c42573c;p=svganimation.git diff --git a/doc/page.md b/doc/page.md index a77c386..33e08d5 100644 --- a/doc/page.md +++ b/doc/page.md @@ -1,3 +1,4 @@ + @@ -23,38 +36,41 @@ SVG.

Les différents exemples se charge en cliquant sur le bouton -dédié. Ceci **n'est pas** le comportement par défaut. Il s'agit +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.

+

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

## Installation -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 : +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 cette bibliothèque JavaScript avant. ## 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. +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* suivit d'un tiret puis d'un nombre (celui-ci pouvant être -formater de différente façons). +*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 +ou, autre exemple : monfichier-001.svg monfichier-002.svg monfichier-003.svg ... @@ -68,24 +84,192 @@ abondamment pour la production d'animations.

-## L'objet `Animation` +## L'utilisation + +### Côté HTML La librairie `SVGAnimation` définit le *prototype* javascript -`Animation`. Pour l'utiliser il faut déclarer +`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(); +~~~~~~~ + +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...
+
+
+ + +#### Chargement différé + +On peut laisser le chargement d'une animation à la demande 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 +justement le chargement de l'animation... + +~~~~~~~ { .html } +
+ animation1 +
Ellipsographe
+
+
+~~~~~~~ + +Dans le même temps, le *style* des éléments englobants a été adapté. + +
animation1 -
Ellipsographe
-
+
Ellipsographe
+
-### L'utilisation ### Les paramètres +L'objet `Animation` ne possède que deux propriétés configurables, autres +que celles (4) qui lui sont passées en argument. + +• **delai** *(valeur par défaut : 50)* — C'est la durée, en millisecondes, entre deux images. + +~~~{.javascript} +var a = new Animation('anim','svg/pre',1,100); +a.delai = 200; +a.loopOnload(); +~~~ +Ceci fixera le défilement à 5 images/s. Un *player* comme ceux que nous vous proposons ci-dessus peut +modifier cette valeur. + +• **pad** *(valeur par défaut : 0)* — Ce paramètre n'a d'effet +que s'il est supérieur ou égal à 2, il permet de fixer la longueur des +index des images en complétant avec des 0. + +~~~{.javascript} +var a = new Animation('anim','svg/pre',1,100); +a.pad = 3; +a.loopOnload(); +~~~ +Les images chargées seront, successivement, `svg/pre001.svg`, `svg/pre002.svg`, ..., `svg/pre100.svg`. + ## Les *players* ### `SVGPlayerOne.js` ### `SVGPlayerButtons.js` + +## Exemples d'utilisation