2 <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
3 <script type=
"text/javascript" src=
"../SVGAnimation.js"></script>
4 <script type=
"text/javascript" src=
"../SVGPlayerOne.js"></script>
5 <script type=
"text/javascript">
6 function charge(i,p,a,b) {
7 var anim = new Animation(i,p,a,b);
9 var player = new Controle(anim);
12 $(window).load(function() {
13 anim = new Animation('XXXX','../ellipsographe/svg/ellipsographe-',
1,
91);
15 player = new Controle(anim);
19 <p><strong>Participants :
</strong> Chupin Maxime, Sarlat Jean-Michel.
</p>
20 <p><strong>Interface du d
ép
ôt Git :
</strong> <a href=
"http://melusine.eu.org/syracuse/G/git/?p=svganimation.git;a=summary" class=
"uri">http://melusine.eu.org/syracuse/G/git/?p=svganimation.git;a=summary
</a></p>
21 <p>L'objectif est de d
évelopper, en particulier, du code Javascript afin de pr
ésenter des animations de fichiers SVG produits, en particulier, par MetaPost. Ce d
éveloppement n'
étant pas tout
à fait pr
éd
étermin
é, il sera constitu
é à partir de l'exploration de diff
érents sc
énarios de pr
ésentation de ces animations et des modes de construction des fichiers SVG.
</p>
22 <div class=
"alert alert-warning">
24 Les diff
érents exemples se charge en cliquant sur le bouton d
édi
é. Ceci
<strong>n'est pas
</strong> 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.
27 Nous pr
ésentons, dans la section XX, le code qui permet de charger l'animation sur demande.
30 <h2 id=
"installation">Installation
</h2>
31 <p>Le fichier
<code>SVGAnimation.js
</code> (que l'on supposera dans un r
épertoire nomm
é <code>js
</code>) est
à charger dans la page
<code>html
</code> en mettant les lignes suivantes :
</p>
32 <pre><code><script type=
"text/javascript
" src=
"js/SVGAnimation.js
"></script
></code></pre>
33 <h2 id=
"principe">Principe
</h2>
34 <p>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
<code>SVGAnimation
</code> permet de visionner cette animation dans une page HTML gr
âce
à JavaScript.
</p>
35 <h3 id=
"la-famille-dimages">La famille d'images
</h3>
36 <p>Les diff
érentes images composant l'animation doivent se nommer avec un
<em>prefixe
</em> puis d'un nombre (indice), celui-ci pouvant
être formater de diff
érente fa
çons :
</p>
37 <pre><code>monfichier-
1.svg monfichier-
2.svg monfichier-
3.svg ...
</code></pre>
38 <p>ou, autre exemple :
</p>
39 <pre><code>monfichier-
001.svg monfichier-
002.svg monfichier-
003.svg ...
</code></pre>
40 <p>Nous verrons comment g
érer le formatage de l'indice des images dans les sections suivantes.
</p>
41 <div class=
"alert alert-info">
43 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.
46 <h2 id=
"lutilisation">L'utilisation
</h2>
47 <h3 id=
"côté-html">C
ôt
é HTML
</h3>
48 <p>La librairie
<code>SVGAnimation
</code> d
éfinit le
<em>prototype
</em> javascript
<code>Animation
</code>. Pour l'utiliser il faut d
éclarer une balise HTML
<code>div
</code> avec un identifiant (
<code>id
</code>) unique. Choisissons pour l'exemple
<code>XXXX
</code>.
À l'int
érieur de ces balises, il faut : * une balise
<code>img
</code> contenant un image
<code>svg
</code> qui servira de vignette
à l'animation; * une balise
<code>div
</code> avec l'identifiant
<code>id=
"XXXX_message
"</code> o
ù <code>XXXX
</code> est l'identifiant de la balise englobante. Dans cette balise
<em>message
</em>, on y met, si on le souhaite, un message
à afficher avant le chargement de l'animation. * une balise
<code>div
</code> avec l'identifiant
<code>id=
"XXXX_boutons
"</code></p>
49 <p>En supposant que les images SVG se trouvent dans un r
épertoire nomm
é <code>svg
</code>, voici un exemple d'une telle structure :
</p>
50 <div class=
"sourceCode"><pre class=
"sourceCode html"><code class=
"sourceCode html"><span class=
"kw"><div
</span><span class=
"ot"> id=
</span><span class=
"st">"anim1
"</span><span class=
"kw">></span>
51 <span class=
"kw"><img
</span><span class=
"ot"> src=
</span><span class=
"st">"svg/ellipsographe-
1.svg
"</span><span class=
"ot"> alt=
</span><span class=
"st">"animation1
"</span><span class=
"kw">/
></span>
52 <span class=
"kw"><div
</span><span class=
"ot"> class=
</span><span class=
"st">"message
"</span><span class=
"ot"> id=
</span><span class=
"st">"anim1_message
"</span><span class=
"kw">></span>Chargement
<span class=
"kw"></div
></span>
53 <span class=
"kw"><div
</span><span class=
"ot"> id=
</span><span class=
"st">"anim1_boutons
"</span><span class=
"kw">></div
></span>
54 <span class=
"kw"></div
></span></code></pre></div>
55 <h3 id=
"côté-javascript">C
ôt
é JavaScript
</h3>
56 <p>Une fois qu'on a la structure HTML pr
ésent
ée ci-dessus, il est n
écessaire d'ajouter un peu de code JavaScript permettre
à l'animation de se jouer.
</p>
57 <h4 id=
"construire-lobjet-animation">Construire l'objet
<code>Animation
</code></h4>
58 <p>Le
<em>constructeur
</em> du prototype JavaScript s'utilise, pour l'exemple donn
é à la section pr
éc
édente, de la fa
çon suivante :
</p>
59 <div class=
"sourceCode"><pre class=
"sourceCode javascript"><code class=
"sourceCode javascript"><span class=
"kw">var
</span> anim
<span class=
"op">=
</span> <span class=
"kw">new
</span> <span class=
"at">Animation
</span>(
<span class=
"st">'XXXX
'</span><span class=
"op">,
</span><span class=
"st">'svg/ellipsographe-
'</span><span class=
"op">,
</span><span class=
"dv">1</span><span class=
"op">,
</span><span class=
"dv">91</span>)
<span class=
"op">;
</span>
60 <span class=
"va">anim
</span>.
<span class=
"at">loopOnload
</span>()
<span class=
"op">;
</span></code></pre></div>
61 <p><code>XXXX
</code> est l'identifiant de la balise
<code>div
</code> HTML
<em>englobante
</em>,
<code>svg/ellipsographe-
</code> est le pr
éfixe dont on a parl
é plus haut,
<code>1</code> est l'indice de la premi
ère image
à animer, et
<code>91</code> l'indice de la derni
ère.
</p>
62 <p><code>anim.loopOnload()
</code> permet le chargement de l'animation.
</p>
63 <p>Une fois celle-ci charg
é, il faut en permettre la lecture qui se fait gr
âce
à un nouvel objet nomm
é <code>Controle
</code>. Ce contr
ôle s'utilise en fait comme ceci :
</p>
64 <div class=
"sourceCode"><pre class=
"sourceCode javascript"><code class=
"sourceCode javascript"><span class=
"kw">var
</span> anim
<span class=
"op">=
</span> <span class=
"kw">new
</span> <span class=
"at">Animation
</span>(
<span class=
"st">'XXXX
'</span><span class=
"op">,
</span><span class=
"st">'svg/ellipsographe-
'</span><span class=
"op">,
</span><span class=
"dv">1</span><span class=
"op">,
</span><span class=
"dv">91</span>)
<span class=
"op">;
</span>
65 <span class=
"va">anim
</span>.
<span class=
"at">loopOnload
</span>()
<span class=
"op">;
</span>
66 <span class=
"kw">var
</span> player
<span class=
"op">=
</span> <span class=
"kw">new
</span> <span class=
"at">Controle
</span>(anim)
<span class=
"op">;
</span>
67 <span class=
"va">player
</span>.
<span class=
"at">connect
</span>()
<span class=
"op">;
</span></code></pre></div>
68 <p>Nous verrons par la suite comment personnaliser le contr
ôle de la lecture de l'animation.
</p>
69 <p>Tout ceci n'est toujours pas suffisant car il faut ex
écuter ce code JavaScript. Ceci peut
être fait gr
âce
à <code>JQuery
</code> par exemple, en ex
écutant ces quatre lignes de code
à l'ouverture de la fen
être :
</p>
70 <div class=
"sourceCode"><pre class=
"sourceCode javascript"><code class=
"sourceCode javascript"><span class=
"at">$
</span>(window).
<span class=
"at">load
</span>(
<span class=
"kw">function
</span>()
<span class=
"op">{
</span>
71 <span class=
"kw">var
</span> anim
<span class=
"op">=
</span> <span class=
"kw">new
</span> <span class=
"at">Animation
</span>(
<span class=
"st">'XXXX
'</span><span class=
"op">,
</span><span class=
"st">'svg/ellipsographe-
'</span><span class=
"op">,
</span><span class=
"dv">1</span><span class=
"op">,
</span><span class=
"dv">91</span>)
<span class=
"op">;
</span>
72 <span class=
"va">anim
</span>.
<span class=
"at">loopOnload
</span>()
<span class=
"op">;
</span>
73 <span class=
"kw">var
</span> player
<span class=
"op">=
</span> <span class=
"kw">new
</span> <span class=
"at">Controle
</span>(anim)
<span class=
"op">;
</span>
74 <span class=
"va">player
</span>.
<span class=
"at">connect
</span>()
<span class=
"op">;
</span>
75 <span class=
"op">}
</span>)
<span class=
"op">;
</span></code></pre></div>
76 <p>Bien s
ûr, ceci n
écessite le chargement, dans la page HTML, de la librairie
<code>JQuery
</code>.
</p>
77 <h4 id=
"le-résultat">Le r
ésultat
</h4>
78 <p>Tout ceci donne le code suivant
</p>
79 <div class=
"sourceCode"><pre class=
"sourceCode html"><code class=
"sourceCode html"><span class=
"kw"><script
</span><span class=
"ot"> src=
</span><span class=
"st">"https://ajax.googleapis.com/ajax/libs/jquery/
1.11.2/jquery.min.js
"</span><span class=
"kw">></script
></span>
80 <span class=
"kw"><script
</span><span class=
"ot"> type=
</span><span class=
"st">"text/javascript
"</span><span class=
"ot"> src=
</span><span class=
"st">"../SVGAnimation.js
"</span><span class=
"kw">></script
></span>
81 <span class=
"kw"><script
</span><span class=
"ot"> type=
</span><span class=
"st">"text/javascript
"</span><span class=
"kw">></span>
82 <span class=
"at">$
</span>(window).
<span class=
"at">load
</span>(
<span class=
"kw">function
</span>()
<span class=
"op">{
</span>
83 <span class=
"kw">var
</span> anim
<span class=
"op">=
</span> <span class=
"kw">new
</span> <span class=
"at">Animation
</span>(
<span class=
"st">'XXXX
'</span><span class=
"op">,
</span><span class=
"st">'svg/ellipsographe-
'</span><span class=
"op">,
</span><span class=
"dv">1</span><span class=
"op">,
</span><span class=
"dv">91</span>)
<span class=
"op">;
</span>
84 <span class=
"va">anim
</span>.
<span class=
"at">loopOnload
</span>()
<span class=
"op">;
</span>
85 <span class=
"kw">var
</span> player
<span class=
"op">=
</span> <span class=
"kw">new
</span> <span class=
"at">Controle
</span>(anim)
<span class=
"op">;
</span>
86 <span class=
"va">player
</span>.
<span class=
"at">connect
</span>()
<span class=
"op">;
</span>
87 <span class=
"op">}
</span>)
<span class=
"op">;
</span>
88 <span class=
"op"><</span><span class=
"ss">/script
></span>
89 <span class=
"ss"><!--
</span><span class=
"sc">[...]
</span><span class=
"ss">--
></span>
90 <span class=
"ss"><div id=
"XXXX
"></span>
91 <span class=
"ss"> <img src=
"svg/ellipsographe
</span><span class=
"fl">-
1.
</span>svg
<span class=
"st">" alt=
"</span>animation1
<span class=
"st">"/
></span>
92 <span class=
"op"><</span>div
<span class=
"kw">class
</span><span class=
"op">=
</span><span class=
"st">"message
"</span> id
<span class=
"op">=
</span><span class=
"st">"XXXX_message
"</span><span class=
"op">></span><span class=
"va">Chargement
</span>...
<span class=
"op"><</span><span class=
"ss">/div
></span>
93 <span class=
"ss"> <div id=
"XXXX_boutons
"></div
</span><span class=
"op">></span>
94 <span class=
"op"><</span><span class=
"ss">/div
></span></code></pre></div>
95 <p>dont le r
ésultat est :
</p>
97 <img src=
"../ellipsographe/svg/ellipsographe-1.svg" alt=
"animation1"/>
98 <div id=
"XXXX_message" class=
"message">
101 <div id=
"XXXX_boutons">
105 <div id=
"anim2" style=
"margin:10px auto;padding:10px;width:350px;border:2px solid #AAA;border-radius:4px">
106 <img src=
"../ellipsographe/svg/ellipsographe-1.svg" alt=
"animation1" style=
"width:330px;height:240px"/>
107 <div id=
"anim2_message" class=
"message">
110 <div id=
"anim2_boutons">
111 <button onclick=
"charge('anim2','../ellipsographe/svg/ellipsographe-',1,91);">
116 <h3 id=
"les-paramètres">Les param
ètres
</h3>
117 <h2 id=
"les-players">Les
<em>players
</em></h2>
118 <h3 id=
"svgplayerone.js"><code>SVGPlayerOne.js
</code></h3>
119 <h3 id=
"svgplayerbuttons.js"><code>SVGPlayerButtons.js
</code></h3>
120 <h2 id=
"exemples-dutilisation">Exemples d'utilisation
</h2>
122 <div id=
"TDM" class=
"tdm">
123 <div style=
"text-align:center">
124 <a href=
"javascript:tdmgauche();">←</a> <b>Sections
</b> <a href=
"javascript:tdmdroite();">→</a>
127 <li><a href=
"#installation">Installation
</a></li>
128 <li><a href=
"#principe">Principe
</a><ul>
129 <li><a href=
"#la-famille-dimages">La famille d'images
</a></li>
131 <li><a href=
"#lutilisation">L'utilisation
</a><ul>
132 <li><a href=
"#côté-html">C
ôt
é HTML
</a></li>
133 <li><a href=
"#côté-javascript">C
ôt
é JavaScript
</a></li>
134 <li><a href=
"#les-paramètres">Les param
ètres
</a></li>
136 <li><a href=
"#les-players">Les
<em>players
</em></a><ul>
137 <li><a href=
"#svgplayerone.js"><code>SVGPlayerOne.js
</code></a></li>
138 <li><a href=
"#svgplayerbuttons.js"><code>SVGPlayerButtons.js
</code></a></li>
140 <li><a href=
"#exemples-dutilisation">Exemples d'utilisation
</a></li>
143 <div style=
"clear:both"></div>