<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>weeXord.org</title>
	<atom:link href="http://weexord.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://weexord.org</link>
	<description>HTML5 et sa sauce JavaScript servi sur son coulis de Jeux Vidéos</description>
	<lastBuildDate>Sun, 09 Oct 2011 22:42:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Nouvelle version</title>
		<link>http://weexord.org/2010/11/07/nouvelle-version/</link>
		<comments>http://weexord.org/2010/11/07/nouvelle-version/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 06:17:35 +0000</pubDate>
		<dc:creator>z0va</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://weexord.org/?p=280</guid>
		<description><![CDATA[Un peu de nouveauté sur le blog, je me permet donc de faire un billet pour accompagner la peinture fraîche. La version 7.2 se veut plus ergonomique et mieux organisée afin de laisser place à l&#8217;essentiel ! La ligne de mire reste toujours le minimaliste dans un soucis d&#8217;optimisation du poids de la page, et [...]]]></description>
			<content:encoded><![CDATA[<div class="TweetButton_button" style="width:100%;text-align:right;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fweexord.org%2F2010%2F11%2F07%2Fnouvelle-version%2F&amp;text=Nouvelle version&amp;count=horizontal&amp;via=z0va&amp;lang=fr&amp;related=design,version"><img src="http://weexord.org/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
<p>Un peu de nouveauté sur le <strong>blog</strong>, je me permet donc de faire un billet pour accompagner la peinture fraîche. La version 7.2 se veut plus <strong>ergonomique</strong> et mieux <strong>organisée</strong> afin de laisser place à l&#8217;essentiel ! La ligne de mire reste toujours le <strong>minimaliste</strong> dans un soucis d&#8217;<strong>optimisation du poids de la page</strong>, et plus simplement parce que c&#8217;est le genre d&#8217;interface qui me convient parfaitement.<br />
<span id="more-280"></span><br />
Pour cela il y a eu pas mal de modification du thème, j&#8217;ai tout d&#8217;abord modifié la mise en place des éléments afin d&#8217;obtenir un résultat plus clair et naturel. J&#8217;ai par la même occasion remanié et optimisé entièrement la feuille de style (CSS), et fait place à quelques propriétés en <strong>CSS3</strong>.<br />
L&#8217;autre nouveauté est l&#8217;ajout d&#8217;un <strong>bouton Twitter</strong> sur les pages des articles, ceci est une volonté que j&#8217;ai d&#8217;ouvrir ce site vers un autre moyen de communication que j&#8217;utilise, pour pouvoir partager plus facilement les contenus que je met à votre disposition.</p>
<p>Sinon le rythme du blog ne changera surement pas, en ce moment j&#8217;ai beaucoup de projets en parallèle, je publie toutes les semaines une chronique sur <a href="http://nextbuzz.net" target="_blank">Nextbuzz</a>, je code et fait pas mal de veille. Et au delà de ça, j&#8217;ai quand même un métier et une vie donc je prends mon temps pour essayer de faire les choses du mieux possible.<br />
Pour finir je dirais que la volonté même du blog est de fournir des articles de qualité, et que c&#8217;est surement pour cela que la quantité d&#8217;articles est bien maigre.</p>
<p>En attendant la suite, vous pouvez toujours suivre mes actualités sur <a href="http://twitter.com/z0va" target="_blank">mon compte Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://weexord.org/2010/11/07/nouvelle-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canvas Player beta</title>
		<link>http://weexord.org/2010/10/02/canvas-player-beta/</link>
		<comments>http://weexord.org/2010/10/02/canvas-player-beta/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 16:23:00 +0000</pubDate>
		<dc:creator>z0va</dc:creator>
				<category><![CDATA[Créations]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Player]]></category>

		<guid isPermaLink="false">http://weexord.org/?p=243</guid>
		<description><![CDATA[[UPDATE 1.2.b] Je vais vous présenter un projet que je développe actuellement : un canvas player. On trouves de plus en plus d&#8217;animations/jeux réalisés avec les canvas (html5) seulement elles sont gourmandes en ressources. De ce constat, j&#8217;ai imaginé une solution qui réglerait certains problèmes que cela peut engendrer. Imaginez que je poste une démo [...]]]></description>
			<content:encoded><![CDATA[<div class="TweetButton_button" style="width:100%;text-align:right;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fweexord.org%2F2010%2F10%2F02%2Fcanvas-player-beta%2F&amp;text=Canvas Player beta&amp;count=horizontal&amp;via=z0va&amp;lang=fr&amp;related=Canvas,HTML5,JavaScript,Player"><img src="http://weexord.org/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
<p>[<a href="http://weexord.org/2010/10/02/canvas-player-beta/#comment-272">UPDATE</a> 1.2.b]<br />
Je vais vous présenter un projet que je développe actuellement : un <strong>canvas player</strong>.<br />
On trouves de plus en plus d&#8217;animations/jeux réalisés avec les canvas (html5) seulement elles sont <strong>gourmandes en ressources</strong>. De ce constat, j&#8217;ai imaginé une solution qui réglerait certains problèmes que cela peut engendrer.<br />
<span id="more-243"></span><br />
Imaginez que je poste une démo dans un article, vous la découvrez et souhaitez ensuite lire l&#8217;article. La question qui me vient à l&#8217;esprit et de savoir pourquoi la démo devrait tourner en fond lorsque c&#8217;est inutile ?<br />
Certains proposent donc des &lt;input type=&quot;button&quot; /&gt; permettant de stopper l&#8217;animation mais c&#8217;est extrêmement moche d&#8217;un point de vue esthétique.</p>
<p>Du coup je proposerai bientôt un &laquo;&nbsp;<strong>widget</strong>&nbsp;&raquo; en <strong>JavaScript</strong> permettant de contrôler votre animation de la même manière que le ferait un player comme celui de Youtube avec une vidéo.<br />
Je ne vous en dis pas plus pour le moment, je ferais une présentation complète lorsque j&#8217;aurai fini son développement.</p>
<p>En attendant voici une première ébauche du player, mettant en action une petite démo que j&#8217;avais réalisé pour le fun :</p>
<canvas id="c"></canvas><script type="text/javascript" src="http://weexord.org/scripts/subliminal.js"></script><br /><br />

]]></content:encoded>
			<wfw:commentRss>http://weexord.org/2010/10/02/canvas-player-beta/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Hacks JavaScript</title>
		<link>http://weexord.org/2010/09/05/hack-javascript/</link>
		<comments>http://weexord.org/2010/09/05/hack-javascript/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 17:14:10 +0000</pubDate>
		<dc:creator>z0va</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://weexord.org/?p=204</guid>
		<description><![CDATA[Aujourd&#8217;hui je vais vous montrer quelques hacks JavaScript, qui pourront vous aider à optimiser vos codes (en terme de taille) chose utile lors des concours qui imposent une limitation de taille. Ce petit article va vous montrer les méthodes que je connais, il en existe surement d&#8217;autres et je ne demandes qu&#8217;à les connaitre ! [...]]]></description>
			<content:encoded><![CDATA[<div class="TweetButton_button" style="width:100%;text-align:right;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fweexord.org%2F2010%2F09%2F05%2Fhack-javascript%2F&amp;text=Hacks JavaScript&amp;count=horizontal&amp;via=z0va&amp;lang=fr&amp;related=hack,JavaScript,optimisation"><img src="http://weexord.org/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
<p>Aujourd&#8217;hui je vais vous montrer quelques <strong>hacks JavaScript</strong>, qui pourront vous aider à <strong>optimiser</strong> vos <strong>codes</strong> (en terme de taille) chose utile lors des concours qui imposent une limitation de taille.<br />
<span id="more-204"></span><br />
Ce petit article va vous montrer les méthodes que je connais, il en existe surement d&#8217;autres et je ne demandes qu&#8217;à les connaitre !</p>
<h2>Regroupement des variables</h2>
<p>Lorsqu&#8217;un groupe de variables sont initialisées avec la même valeur, au lieu de les déclarer séparément il est clairement plus simple de faire une seul déclaration :</p>

<div class="wp_codebox"><table><tr id="p2047"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p204code7"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Code non optimisé</span>
<span style="color: #003366; font-weight: bold;">var</span> a<span style="color: #339933;">=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> b<span style="color: #339933;">=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> c<span style="color: #339933;">=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Code optimisé</span>
<span style="color: #003366; font-weight: bold;">var</span> a<span style="color: #339933;">=</span>b<span style="color: #339933;">=</span>c<span style="color: #339933;">=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Ainsi on passe de 24 à 12 bytes, c&#8217;est donc un gain considérable et à mon sens la déclaration est bien plus simple à relire.</p>
<h2>Récupérer un élément</h2>
<p>Généralement lorsqu&#8217;on souhaites manipuler un élément, on fait appel à la méthode <strong>document.getElementById()</strong>, et bien sachez que l&#8217;on peut récupérer ce même élément avec d&#8217;autres méthodes.<br />
Le point commun des éléments de la page et bel est bien le corps de la page (body), et bien on va l&#8217;utiliser pour récupérer un de ses &laquo;&nbsp;enfant&nbsp;&raquo;.<br />
Voici l&#8217;exemple de page que nous allons utiliser :</p>

<div class="wp_codebox"><table><tr id="p2048"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p204code8"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">html</span></a>&gt;</span>
	<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">head</span></a>&gt;&lt;<a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold;">title</span></a>&gt;</span>Exemple<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold;">title</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">head</span></a>&gt;</span>
	<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">body</span></a>&gt;</span>
		<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;a&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span>
		<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">body</span></a>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">html</span></a>&gt;</span></pre></td></tr></table></div>

<p>Maintenant nous allons voir comment récupérer les deux div à l&#8217;aide de <strong>document.body</strong>.</p>
<p>En premier lieu nous avons un div qui possède un ID, un simple <strong>document.body.a</strong> nous permet donc de récupérer l&#8217;élément.</p>
<p>Dans le deuxième cas il va falloir utiliser le tableau d&#8217;enfants de body (<strong>document.body.children</strong>), et indiquer la position du div.<br />
Nous voulons récupérer le deuxième élément de la page or dans un tableau, l&#8217;indexation commence à 0 (donc ce div sera le numéro 1), ce qui donne : <strong>document.body.children[1]</strong>.</p>
<p>Au final on voit qu&#8217;on gagne très peu en taille mais justement ça se joue souvent à très peu de choses, donc il est bon de garder cette méthode à l&#8217;esprit <img src='http://weexord.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Les conditions</h2>
<p>Voici une partie où l&#8217;on peut gagner pas mal de bytes très simplement.<br />
Je vais vous montrer tout d&#8217;abord une petite astuce qui pourra peut être vous servir :</p>

<div class="wp_codebox"><table><tr id="p2049"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p204code9"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Code non optimisé</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>a <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">10</span> <span style="color: #339933;">&amp;&amp;</span> a <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">20</span> <span style="color: #339933;">&amp;&amp;</span> b <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">30</span> <span style="color: #339933;">&amp;&amp;</span> b <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">40</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Code optimisé</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>a <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">10</span> <span style="color: #339933;">&amp;</span> a <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">20</span> <span style="color: #339933;">&amp;</span> b <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">30</span> <span style="color: #339933;">&amp;</span> b <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">40</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>J&#8217;ai volontairement conservé les espaces pour la lisibilité, mais en fait on voit que <b>&#038;&#038;</b> peut dans la plupart des cas être remplacé par <b>&#038;</b>, et dans ce cas on gagne quand même 3 caractères !</p>
<p>Voici maintenant la partie la plus intéressante, l&#8217;opérateur ternaire. En fait il s&#8217;agit d&#8217;optimiser une condition simple de type <b>if/else</b>, avec une seule condition dans le if, et une seule action à effectuer dans les deux cas !</p>

<div class="wp_codebox"><table><tr id="p20410"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p204code10"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Exemple #1</span>
	<span style="color: #006600; font-style: italic;">//Code non optimisé</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>a <span style="color: #339933;">==</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span> b <span style="color: #339933;">=</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">else</span> b <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">20</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// Code optimisé</span>
		b <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>a <span style="color: #339933;">==</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">20</span> <span style="color: #339933;">:</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">20</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Exemple #2</span>
	<span style="color: #006600; font-style: italic;">// Code non optimisé</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>a <span style="color: #339933;">==</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'pile'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'poil'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// Code optimisé</span>
		<span style="color: #009900;">&#40;</span>a <span style="color: #339933;">==</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'pile'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'poil'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Une dernière petite chose, quand on cherche à vérifier qu&#8217;une variable n&#8217;est pas égale à zéro :</p>

<div class="wp_codebox"><table><tr id="p20411"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p204code11"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Code non optimisé</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>a <span style="color: #339933;">!=</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Code optimisé</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>a<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>En effet quand une variable est égale à <b>0/null/false</b> il est considéré qu&#8217;elle n&#8217;existe pas puisqu&#8217;elle est nulle.</p>
<h2>Math.floor()</h2>
<p>Pour finir je vais vous montrer une astuce plutôt sympa, si on cherches à arrondir à l&#8217;entier en dessous : <b>|0</b></p>

<div class="wp_codebox"><table><tr id="p20412"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p204code12"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Code non optimisé</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2.5</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Code optimisé</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2.5</span><span style="color: #339933;">|</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Cette méthode fait quand même gagner 10 bytes donc imaginez si on répète l&#8217;opération plusieurs fois !</p>
<h2>Conclusion</h2>
<p>Je pense avoir fait le tour des différentes méthodes permettant de gagner quelques bytes, j&#8217;en ai surement oublié (peut-être même certaines que je connais) mais je complèterai cette liste si le besoin s&#8217;en fait.</p>
<p>Un dernier petit conseil pour l&#8217;optimisation utilisez <a href="http://dean.edwards.name/packer/" target="_blank">packer</a> pour minifier vos codes. C&#8217;est le meilleur compresseur JavaScript que j&#8217;ai pu trouver jusqu&#8217;à ce jour !</p>
]]></content:encoded>
			<wfw:commentRss>http://weexord.org/2010/09/05/hack-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiation aux Canvas</title>
		<link>http://weexord.org/2010/08/07/initiation-aux-canvas/</link>
		<comments>http://weexord.org/2010/08/07/initiation-aux-canvas/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 17:27:03 +0000</pubDate>
		<dc:creator>z0va</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tutoriel]]></category>

		<guid isPermaLink="false">http://weexord.org/?p=64</guid>
		<description><![CDATA[Je parle des canvas, c&#8217;est bien mignon mais encore faudrait-il savoir les utiliser ! Pour cela j&#8217;ai décidé de faire un petit tutoriel -plus ou moins complet- afin de faire un petit tour d&#8217;horizon de l&#8217;API de dessin. Qu&#8217;est-ce qu&#8217;un Canvas ? C&#8217;est un composant issu du HTML5, qui n&#8217;est pas encore complet mais qui [...]]]></description>
			<content:encoded><![CDATA[<div class="TweetButton_button" style="width:100%;text-align:right;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fweexord.org%2F2010%2F08%2F07%2Finitiation-aux-canvas%2F&amp;text=Initiation aux Canvas&amp;count=horizontal&amp;via=z0va&amp;lang=fr&amp;related=Canvas,HTML5,JavaScript,Tutoriel"><img src="http://weexord.org/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
<p>Je parle des canvas, c&#8217;est bien mignon mais encore faudrait-il savoir les utiliser ! Pour cela j&#8217;ai décidé de faire un petit tutoriel -plus ou moins complet- afin de faire un petit tour d&#8217;horizon de l&#8217;API de dessin.<br />
<span id="more-64"></span></p>
<h3>Qu&#8217;est-ce qu&#8217;un Canvas ?</h3>
<p>C&#8217;est un composant issu du <strong>HTML5</strong>, qui n&#8217;est pas encore complet mais qui nous permet dors et déjà pas mal de choses. On peut apparenter cet élément à une <strong>zone de dessin</strong>, qui peut être manipulée à l&#8217;aide d&#8217;une <strong>API</strong> spécifique en <strong>JavaScript</strong>.</p>
<h3>Comment ça marche ?</h3>
<p>On a tout d&#8217;abord la partie HTML qui va définir l&#8217;élément Canvas d&#8217;un point de vue de la page. Cette partie aura pour but de positionner le Canvas dans notre page, mais aussi de définir sa taille.</p>

<div class="wp_codebox"><table><tr id="p6423"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p64code23"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;canvas <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;premierCanvas&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;mesCanvas&quot;</span> <span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;300&quot;</span> <span style="color: #000066;">height</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;300&quot;</span>&gt;</span>
	Votre navigateur ne supporte pas les Canvas :(
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span>canvas&gt;</span></pre></td></tr></table></div>

<p>Rien de plus complexe que ça, c&#8217;est en réalité aussi simple que de créer une <strong>IFRAME</strong>&#8230;<br />
Donc c&#8217;est une simple balise type, où l&#8217;on peut spécifier ses dimensions de 3 façons différentes : directement <strong>dans la balise</strong>, via son <strong>style CSS</strong>, ou bien via le <strong>DOM</strong>.<br />
Sachez que dans l&#8217;exemple ci-dessus la ligne 2 est optionnelle, et son texte ne sera affiché que si le navigateur ne prends pas en charge les Canvas, sauf dans le cas de Safari qui ne prends pas en charge la balise de fermeture et qui affichera à coup sur votre texte alternatif.</p>
<h3>Comment ça se manipule ?</h3>
<p>Donc à l&#8217;heure actuelle si vous ouvrez votre page dans un VRAI navigateur vous ne verrez absolument rien, car pour pouvoir afficher votre Canvas il faut initialiser le contexte de dessin.</p>
<p>Sachez qu&#8217;il existe 2 types de contextes : 2D et 3D mais pour ma part je n&#8217;ai jamais utilisé le 3D qui est extrêmement limité et n&#8217;est supporté par quasiment aucun navigateur ! Mais on peut imaginer dans le futur voir la manipulation de Canvas en 3D se généraliser, mais je n&#8217;y crois pas vraiment.</p>

<div class="wp_codebox"><table><tr id="p6424"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p64code24"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> element <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'premierCanvas'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> canvas <span style="color: #339933;">=</span> element.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Donc simplement on récupère notre élément via le DOM, puis on appelle la méthode getContext() qui va nous permettre d&#8217;utiliser les fonctions de dessin.</p>
<p>Maintenant je vais vous montrer comment empêcher de se bouffer des erreurs JavaScript parce qu&#8217;on tente d&#8217;exécuter notre code sur un navigateur qui ne supporte par les Canvas.</p>

<div class="wp_codebox"><table><tr id="p6425"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p64code25"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> element <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'premierCanvas'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>element.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> canvas <span style="color: #339933;">=</span> element.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Bien sur n&#8217;oubliez pas de laisser tout le code relatif au Canvas dans le if, sinon ça ne sert strictement à rien <img src='http://weexord.org/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<h3>Comment on dessine dedans ?</h3>
<p>Pour commencer on va aborder le dessin de formes simples. Donc il faut savoir que tout se mesure en pixels et que par défault l&#8217;origine du Canvas se situe en haut à gauche donc toutes nos coordonnées se baseront sur ce point.</p>
<h4>Les rectangles</h4>
<pre>  <strong>fillRect(x,y,width,height)</strong>
    Pour dessiner un rectangle plein
  <strong>strokeRect(x,y,width,height)</strong>
    Pour dessiner un rectangle vide
  <strong>clearRect(x,y,width,height)</strong>
    Pour effacer la zone spécifiée et la rendre transparente</pre>

<div class="wp_codebox"><table><tr id="p6426"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p64code26"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> element <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'premierCanvas'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>element.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> canvas <span style="color: #339933;">=</span> element.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">fillRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">10</span><span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #339933;">,</span><span style="color: #CC0000;">280</span><span style="color: #339933;">,</span><span style="color: #CC0000;">280</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">clearRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">20</span><span style="color: #339933;">,</span><span style="color: #CC0000;">20</span><span style="color: #339933;">,</span><span style="color: #CC0000;">260</span><span style="color: #339933;">,</span><span style="color: #CC0000;">260</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">strokeRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">140</span><span style="color: #339933;">,</span><span style="color: #CC0000;">140</span><span style="color: #339933;">,</span><span style="color: #CC0000;">20</span><span style="color: #339933;">,</span><span style="color: #CC0000;">20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>L&#8217;exemple ci-dessus va dessiner un grand rectangle, dont une grande partie sera ensuite effacée et rendue transparente, dans laquelle on dessinera un petit rectangle vide. L&#8217;exécution de la fonction <strong>draw()</strong> devrait donc vous donner ça :<br />
<img src="http://weexord.org/wp-content/uploads/2010/08/canvas_rect.png" alt="" title="Exemple d&#039;utilisation des rectangles dans un Canvas" width="300" height="300" class="aligncenter size-full wp-image-104" /></p>
<h4>Les chemins</h4>
<p>Voilà la seule autre possibilité dessin, mais pas des moindres puisqu&#8217;elle permet de dessiner absolument toutes les formes possibles !<br />
Cette méthode se décompose en 4 étapes bien distinctes :</p>
<ul>
<li><strong>beginPath()</strong> &#8211; On commence la création d&#8217;un chemin, donc il faut voir ça comme une liste d&#8217;instructions qui sera (ré)initialisée à chaque appel de cette méthode</li>
<li>On appelle les méthodes de dessin de chemins (on va voir ça bientôt)</li>
<li><strong>closePath()</strong> &#8211; On peut ensuite appeler ou non cette méthode afin de fermer le chemin en partant du point courant jusqu&#8217;au point de départ.<br />
Notez que si la forme est fermée, ou qu&#8217;il n&#8217;y a qu&#8217;un point cette méthode est inutile</li>
<li>Pour finir on appellera la méthode <strong>stroke()</strong> si on veut dessiner une forme vide, ou <strong>fill()</strong> pour une forme remplie</li>
</ul>
<p>Je vais maintenant vous présenter les méthodes de base des chemins</p>
<ul>
<li><strong>moveTo(x,y)</strong><br />
Cette méthode permet de dessiner un point de départ, mais sachez que ce point est réinitialisé à chaque appel de <strong>beginPath()</strong> aux coordonnées (0,0)</li>
<li><strong>lineTo(x,y)</strong><br />
Cette méthode permet de dessiner une ligne, partant du point de départ jusqu&#8217;au point passé en paramètre (x,y)</li>
<li><strong>arc(x,y,rayon,angleDepart,angleFin,sensInverse)</strong><br />
Cette méthode permet de dessiner des arc, ou cercles avec un point central aux coordonnées (x,y), avec un angle de départ et de fin (en radians).<br />
Le paramètre sensInverse permet de définir le sens de rotation, lorsqu&#8217;il est à <strong>false</strong> il dessine l&#8217;arc dans le sens des aiguilles d&#8217;une montre</li>
</ul>
<p>Il existe d&#8217;autres fonctions qui permettent de dessiner des courbes, mais je n&#8217;ai pas jugé bon de les aborder car je souhaites seulement aborder les &laquo;&nbsp;bases&nbsp;&raquo;.<br />
Je vous ait donc préparé un petit exemple vous montrant ce que l&#8217;ont peut rapidement réaliser avec les méthodes ci-dessus.</p>

<div class="wp_codebox"><table><tr id="p6427"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre></td><td class="code" id="p64code27"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> element <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'premierCanvas'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>element.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> canvas <span style="color: #339933;">=</span> element.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// Rectangle vide</span>
		canvas.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">moveTo</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">291</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span><span style="color: #CC0000;">293</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">closePath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">stroke</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// Rectangle plein</span>
		canvas.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">moveTo</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">7</span><span style="color: #339933;">,</span><span style="color: #CC0000;">295</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">295</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">295</span><span style="color: #339933;">,</span><span style="color: #CC0000;">295</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		canvas.<span style="color: #660066;">fill</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> angleFin <span style="color: #339933;">=</span> Math.<span style="color: #660066;">PI</span> <span style="color: #339933;">*</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">;</span>
			<span style="color: #006600; font-style: italic;">// Cercle vide</span>
			canvas.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			canvas.<span style="color: #660066;">arc</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">55</span><span style="color: #339933;">,</span><span style="color: #CC0000;">75</span><span style="color: #339933;">,</span><span style="color: #CC0000;">20</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>angleFin<span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			canvas.<span style="color: #660066;">stroke</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #006600; font-style: italic;">// Cercle plein</span>
			canvas.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			canvas.<span style="color: #660066;">arc</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">85</span><span style="color: #339933;">,</span><span style="color: #CC0000;">75</span><span style="color: #339933;">,</span><span style="color: #CC0000;">20</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>angleFin<span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			canvas.<span style="color: #660066;">fill</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>On dessine tout simplement 2 rectangles inversés ainsi que 2 cercles, un vide et un plein afin que vous voyez les deux méthodes. Et normalement l&#8217;exécution de la fonction <strong>draw()</strong> devrait vous dessiner quelque chose comme ça :<br />
<img src="http://weexord.org/wp-content/uploads/2010/08/canvas_chemins.png" alt="" title="Exemple de dessin de chemins dans un Canvas" width="300" height="300" class="aligncenter size-full wp-image-130" /></p>
<h4>Les images</h4>
<p>Voici une partie extrêmement importante et vraiment facile à aborder. En effet si vous commencez à jouer avec les Canvas, vous aurez très certainement besoin d&#8217;intégrer des images, utiliser un système de sprites et je vais de ce pas vous expliquer comment ça se passe.<br />
Pour pouvoir utiliser votre image il faut bien évidemment qu&#8217;elle soit intégrée à la page, donc plusieurs cas de figure d&#8217;offrent à vous :</p>
<ul>
<li>Soit votre image est incluse dans votre code HTML et dans ce cas il suffira d&#8217;utiliser <strong>document.getElementById</strong> ou <strong>document.getElementsByTagName</strong> pour pouvoir accéder à votre image</li>
<li>Sinon vous pouvez aussi inclure votre image à partir d&#8217;un fichier

<div class="wp_codebox"><table><tr id="p6428"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p64code28"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// On crée notre objet</span>
<span style="color: #003366; font-weight: bold;">var</span> pic <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Image<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Puis on indique le chemin notre l'image</span>
pic.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'mon-image.png'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

</li>
<li>La dernière méthode est d&#8217;utiliser les <strong>Data URI</strong> en gros ça corresponds simplement au code de votre image encodé en <strong>base64</strong>. De ce fait l&#8217;image peut être inclue très facilement et sans avoir à appeler d&#8217;autre(s) fichier(s) sur le serveur

<div class="wp_codebox"><table><tr id="p6429"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p64code29"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> pic <span style="color: #339933;">=</span> <span style="color: #3366CC;">'data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
g9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

</li>
</ul>
<p>Maintenant que vous savez comment accéder à votre image, il ne reste plus qu&#8217;à la dessiner dans notre joli canvas. Pour ce faire nous allons utiliser la fonction <strong>drawImage()</strong>.</p>
<ul>
<li><strong>drawImage(image,x,y)</strong><br />
dessinera l&#8217;image à la position souhaitée (dans les exemples ci-dessus image = pic)</li>
<li><strong>drawImage(image,x,y,w,h)</strong><br />
vous permettra de redimensionner votre image</li>
<li><strong>drawImage(image,x1,y1,w1,h1,x2,y2,w2,h2)</strong><br />
vous permet de dessiner seulement une partie de l&#8217;image source, et voici un petit schéma illustrant les paramètres de la fonction</li>
</ul>
<p><img src="http://weexord.org/wp-content/uploads/2010/08/canvas_image.png" alt="" title="Exemple de dessin d&#039;image dans un Canvas" width="360" height="588" class="aligncenter size-full wp-image-146" /></p>
<h4>Texte</h4>
<p>Nous allons maintenant voir très brièvement comment écrire un texte personnalisé dans un Canvas, et pour cela un exemple sera bien plus parlant qu&#8217;un long discours, donc je vous laisse admirer&#8230;</p>

<div class="wp_codebox"><table><tr id="p6430"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p64code30"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// On défini la taille du texte, et la police d'écriture</span>
canvas.<span style="color: #660066;">font</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;12px Verdana&quot;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Puis on va écrire notre texte à la position souhaitée</span>
canvas.<span style="color: #660066;">fillText</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Hello world !&quot;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h4>Couleur et transparence</h4>
<p>Maintenant nous allons voir comment mettre de la couleur à nos textes/dessins, et pour cela nous auront besoin de 2 propriétés qui peuvent utiliser différents format de couleur :</p>
<ul>
<li><strong>fillStyle()</strong>

<div class="wp_codebox"><table><tr id="p6431"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p64code31"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Nom de couleur (comme en CSS)</span>
canvas.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;rouge&quot;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Format hexadécimal</span>
canvas.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;#FF0000&quot;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Format RGB</span>
canvas.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;rgb(255,0,0)&quot;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Format RGB avec transparence de 0.0 (invisible) à 1.0 (opaque)</span>
canvas.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;rbga(255,0,0,1)&quot;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

</li>
<li><strong>strokeStyle()</strong><br />
Fonctionne de la même manière que <strong>fillStyle()</strong></li>
</ul>
<p>Maintenant concernant la transparence, la propriété <strong>globalAlpha</strong> nous permettra de modifier la valeur de transparence de dessins effectués dans le canvas. Pour vous illustrer les propos de ce chapitre, je vous propose sans plus attendre un exemple :</p>

<div class="wp_codebox"><table><tr id="p6432"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</pre></td><td class="code" id="p64code32"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> element <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'premierCanvas'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>element.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> canvas <span style="color: #339933;">=</span> element.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// On initialise le tableau de couleur,</span>
		<span style="color: #006600; font-style: italic;">// le compteur de tour,</span>
		<span style="color: #006600; font-style: italic;">// et les positions de départ</span>
		<span style="color: #003366; font-weight: bold;">var</span> color <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>
			<span style="color: #3366CC;">'orange'</span><span style="color: #339933;">,</span>
			<span style="color: #3366CC;">'#ff017d'</span><span style="color: #339933;">,</span>
			<span style="color: #3366CC;">'rgb(0,255,0)'</span><span style="color: #339933;">,</span>
			<span style="color: #3366CC;">'rgba(0,0,255,0.1)'</span>
		<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		c <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
		x <span style="color: #339933;">=</span> <span style="color: #CC0000;">25</span><span style="color: #339933;">,</span>
		y <span style="color: #339933;">=</span> <span style="color: #CC0000;">25</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">8</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #006600; font-style: italic;">// On trace le chemin du cercle</span>
			canvas.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			canvas.<span style="color: #660066;">arc</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span>y<span style="color: #339933;">,</span><span style="color: #CC0000;">20</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>Math.<span style="color: #660066;">PI</span><span style="color: #339933;">*</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #006600; font-style: italic;">// Cette condition sera vraie une foi sur 2</span>
			<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>2 <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #006600; font-style: italic;">// On dessinera juste le contour</span>
				canvas.<span style="color: #660066;">strokeStyle</span> <span style="color: #339933;">=</span> color<span style="color: #009900;">&#91;</span>c<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				canvas.<span style="color: #660066;">stroke</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				x <span style="color: #339933;">+=</span> <span style="color: #CC0000;">83</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #006600; font-style: italic;">// On aura un dessin rempli</span>
				canvas.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> color<span style="color: #009900;">&#91;</span>c<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				canvas.<span style="color: #660066;">fill</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				x <span style="color: #339933;">+=</span> <span style="color: #CC0000;">83</span><span style="color: #339933;">;</span>
				c<span style="color: #339933;">++;</span>
&nbsp;
				<span style="color: #006600; font-style: italic;">// Si on est à la moitié de la boucle,</span>
				<span style="color: #006600; font-style: italic;">// on passe à la deuxième ligne</span>
				<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>c <span style="color: #339933;">==</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span>y <span style="color: #339933;">==</span> <span style="color: #CC0000;">25</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					y <span style="color: #339933;">=</span> <span style="color: #CC0000;">70</span><span style="color: #339933;">;</span>
					x <span style="color: #339933;">=</span> <span style="color: #CC0000;">25</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>		
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Ce qui devrait donner quelque chose du genre :</p>
<p><img src="http://weexord.org/wp-content/uploads/2010/08/canvas_color.png" alt="" title="Exemple de dessin en couleur/transparence" width="302" height="97" class="aligncenter size-full wp-image-196" /></p>
<h3>Conclusion</h3>
<p>Ce tutoriel est vraiment simpliste et sert plutôt de manuel qu&#8217;autre chose, maintenant j&#8217;ai essayé de m&#8217;exprimer de façon simple, mais je ne suis pas sur de pouvoir être objectif sur ce point, donc je vous invite à me faire part de vos remarques/commentaires.</p>
<p>Je tiens à préciser que je n&#8217;ai pas parlé de tout ce que j&#8217;aurai voulu car en abordant seulement les bases, le tutoriel a atteint une taille assez conséquente, donc je vous propose d&#8217;aller voir la <a href="https://developer.mozilla.org/fr/Tutoriel_canvas" target="_blank">documentation</a> du developer center de Mozilla pour plus d&#8217;informations.</p>
<p>Allez à vous de jouer ! <img src='http://weexord.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://weexord.org/2010/08/07/initiation-aux-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Séance rétro-gaming</title>
		<link>http://weexord.org/2010/07/26/seance-retro-gaming/</link>
		<comments>http://weexord.org/2010/07/26/seance-retro-gaming/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 15:27:23 +0000</pubDate>
		<dc:creator>z0va</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Jeux vidéos]]></category>
		<category><![CDATA[MegaDrive]]></category>

		<guid isPermaLink="false">http://weexord.org/?p=18</guid>
		<description><![CDATA[Aujourd&#8217;hui j&#8217;ai préparé une petite sélection de revues vidéos de vieux jeux de la Sega MegaDrive (aka genesis). Ces jeux sont mes préférés sur cette console et j&#8217;y joues encore et toujours, car pour moi ils ne pourront jamais vieillir ! Cet article me permet par la même occasion de vous faire découvrir LE meilleur [...]]]></description>
			<content:encoded><![CDATA[<div class="TweetButton_button" style="width:100%;text-align:right;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fweexord.org%2F2010%2F07%2F26%2Fseance-retro-gaming%2F&amp;text=Séance rétro-gaming&amp;count=horizontal&amp;via=z0va&amp;lang=fr&amp;related=Jeux+vid%C3%A9os,MegaDrive"><img src="http://weexord.org/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
<p><a href="http://weexord.org/wp-content/uploads/2010/07/3588640105_97eb4b35b0.jpg"><img src="http://weexord.org/wp-content/uploads/2010/07/3588640105_97eb4b35b0-300x225.jpg" alt="" title="3588640105_97eb4b35b0" width="300" height="225" class="alignleft size-medium wp-image-54" /></a><br />
Aujourd&#8217;hui j&#8217;ai préparé une petite sélection de revues vidéos de vieux jeux de la <strong>Sega MegaDrive</strong> (aka genesis). Ces jeux sont mes préférés sur cette console et j&#8217;y joues encore et toujours, car pour moi ils ne pourront jamais vieillir !<br />
Cet article me permet par la même occasion de vous faire découvrir LE meilleur testeur de jeux vidéos que je connaisse : le grand <a href="http://www.youtube.com/user/Karkaradon" target="_blank">Hooper</a> \o/</p>
<p><span id="more-18"></span><em>Photo réalisée par <a href="http://www.flickr.com/photos/nickstone333/" target="_blank">nickstone333</a></em></p>
<p>Commençons sans plus attendre avec le meilleur de cette sélection :</p>
<p><strong>The Revenge Of Shinobi</strong></p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/b1GJ1DX9f7o" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/b1GJ1DX9f7o"></embed></object></p>
<p>Il y a aussi le très célèbre <strong>Dragon Ball Z &#8211; L&#8217;appel du Destin</strong></p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/yCEFtI1FLio" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/yCEFtI1FLio"></embed></object></p>
<p>Puis le magnifique <strong>Sonic The Hedgehog</strong></p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/Vud6TnMo9fk" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/Vud6TnMo9fk"></embed></object></p>
<p>Et pour finir le cultissime <strong>Desert Strike</strong></p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/ieGYwtEG6Iw" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/ieGYwtEG6Iw"></embed></object></p>
<p>S&#8217;il y avait quelque chose à retenir de cette console c&#8217;est surtout ces 4 jeux là que je citerait, mais ayant voulu me limiter à Hooper certains titres ont été oubliés comme les excellents <strong>Beat them all</strong> que sont <a href="http://www.youtube.com/watch?v=OA1vV5HZxFo" target="_blank">Street of Rage</a> ou <a href="http://www.youtube.com/watch?v=eN1Viiz35qE" target="_blank">Golden Axe</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://weexord.org/2010/07/26/seance-retro-gaming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ouverture du blog</title>
		<link>http://weexord.org/2010/07/25/ouverture-du-blog/</link>
		<comments>http://weexord.org/2010/07/25/ouverture-du-blog/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 15:46:59 +0000</pubDate>
		<dc:creator>z0va</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jeux vidéos]]></category>

		<guid isPermaLink="false">http://weexord.org/?p=8</guid>
		<description><![CDATA[J&#8217;ai décidé de réouvrir un blog, afin de pouvoir vous transmettre de manière simple, tout ce qui touche à l&#8217;univers des jeux vidéos (2D), allant de mes créations, à mes coups de cœur, mais j&#8217;envisage aussi de publier des tutoriels afin de vous aiguiller dans ce processus. À l&#8217;heure d&#8217;aujourd&#8217;hui, je m&#8217;adonne surtout à la [...]]]></description>
			<content:encoded><![CDATA[<div class="TweetButton_button" style="width:100%;text-align:right;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fweexord.org%2F2010%2F07%2F25%2Fouverture-du-blog%2F&amp;text=Ouverture du blog&amp;count=horizontal&amp;via=z0va&amp;lang=fr&amp;related=Canvas,HTML5,JavaScript,Jeux+vid%C3%A9os"><img src="http://weexord.org/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
<p>J&#8217;ai décidé de réouvrir un blog, afin de pouvoir vous transmettre de manière simple, tout ce qui touche à l&#8217;univers des <strong>jeux vidéos</strong> (2D), allant de mes créations, à mes coups de cœur, mais j&#8217;envisage aussi de publier des tutoriels afin de vous aiguiller dans ce processus.<br />
<span id="more-8"></span><br />
À l&#8217;heure d&#8217;aujourd&#8217;hui, je m&#8217;adonne surtout à la créations de jeux en <strong>JavaScript</strong>. Avec l&#8217;arrivée de l&#8217;élément <strong> Canvas </strong>(issu du HTML5) il devient très simple de développer ses propres jeux et ainsi pouvoir les publier sur internet très rapidement. Le développement de l&#8217;<strong>HTML5</strong> n&#8217;étant qu&#8217;à son début, c&#8217;est une voie prometteuse !</p>
<p>Son support est quand même bien étendu car n&#8217;importe quel personne ayant un &laquo;&nbsp;vrai&nbsp;&raquo; navigateur web pourra donc accéder à votre jeu sans avoir besoin de télécharger quoi que ce soit. C&#8217;est aussi vrai pour les <strong>Smartphones</strong> qui sont encore un peu faibles pour offrir des choses poussées mais qui à l&#8217;avenir auront sans problème adopté cette solution de remplacement au bon vieux <strong>Flash</strong>.</p>
<p>Attention je ne dis pas que l&#8217;<strong>HTML5</strong> est censé remplacer <strong>Flash</strong> à part entière, mais je dis juste que dans certains contextes il peut être une alternative très intéressante.</p>
<p>Bref, je vous prépare quelques démo afin de vous montrer ce qu&#8217;on peut faire avec peu de choses et un peu de temps !</p>
]]></content:encoded>
			<wfw:commentRss>http://weexord.org/2010/07/25/ouverture-du-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

