<?xml version="1.0" encoding="UTF-8" ?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
			<title>RevoluGame</title>
			<link>http://revolugame.com/feed.html</link>
			<description></description>
			<language>fr</language>
			<copyright>RevoluGame 2009</copyright>
			<ttl>120</ttl><item>
		<title>Coloration Flex 4 pour gedit</title>
		<link>http://revolugame.com/blog/coloration-flex-4-gedit.html</link>
		<description><![CDATA[ <p><strong>Gedit</strong> &eacute;tant mon &eacute;diteur pr&eacute;f&eacute;r&eacute;, il se devait d'y avoir un fichier de coloration pour <strong>AS3</strong> et <strong>MXML</strong>.</p>
<p>En cherchant un peu, j'ai trouv&eacute; les fichiers de coloration pour <strong>Flex</strong> (comprenant bien &eacute;videment <strong>AS3</strong> et <strong>MXML</strong>) <a href="http://conic.se/blog/posts/8/" target="_blank">ici</a>.</p>
<p>Seul souci, lors du passage &agrave; <strong>Flex 4</strong>, le code compris dans les balises <strong>&lt; fx:Script &gt;</strong> apparait surlign&eacute; en rouge :</p>
<p>&nbsp;</p>
<p><img src="assets/images/tuto/flex4/flex4_without_edit.jpg" alt="" width="650" height="328" /></p>
<p>&nbsp;</p>
<p>Pas tr&egrave;s joli me direz-vous.</p>
<p>Pour modifier ce petit d&eacute;sagr&eacute;ment, il suffit de rajouter le code suivant :</p> ]]></description>
		<pubDate>Thu, 22 Jul 2010 00:04:14 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/coloration-flex-4-gedit.html</guid>
</item><item>
		<title>Application AIR pour Androïd</title>
		<link>http://revolugame.com/blog/application-air-pour-android.html</link>
		<description><![CDATA[ <p><strong>AIR</strong> est arriv&eacute; sur la plateforme
<strong>Android</strong> depuis la version 2.2 (nom de code <strong>Froyo</strong>). Pour le moment seul le <strong>Nexus One</strong> a eu
le droit &agrave; la mise &agrave; jour. Cependant, les autres mobiles devraient
sous peu recevoir cette nouvelle release.</p>
<p>&nbsp;</p>
<h2>Configuration des outils de d&eacute;veloppement</h2>
<p>&nbsp;</p>
<p>Tout d'abord il nous faut r&eacute;cup&eacute;rer
le <strong>SDK AIR 2.5</strong>. Pour cela, il faut au pr&eacute;alable s'inscrire sur le
site pour pouvoir participer &agrave; cette pre-release (gratuitement) &agrave;
l'adresse suivant&nbsp;:&nbsp;<br /><a href="http://www.adobe.com/go/airbetasignup">http://www.adobe.com/go/airbetasignup</a>.</p>
<div>Une fois que l'inscription est termin&eacute;e,
rendez vous dans la rubrique "Download Software". </div>
<div>R&eacute;cup&eacute;rez la
derni&egrave;re version&nbsp;:</div>
<p>&nbsp;</p>
<p><img src="assets/images/tuto/Android/dlAir.jpg" alt="" width="660" height="450" /></p>
<p>&nbsp;</p>
<p>Deux cas s'offre &agrave; vous : </p> ]]></description>
		<pubDate>Sat, 17 Jul 2010 01:18:41 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/application-air-pour-android.html</guid>
</item><item>
		<title>Simuler un validator en as3</title>
		<link>http://revolugame.com/blog/simuler-un-validator-en-as3.html</link>
		<description><![CDATA[ <div>Il peut s'averer utile de pouvoir ajouter manuellement le style <strong>.errorTip</strong> &agrave; un champ &agrave; la mani&egrave;re d'un <strong>validator</strong> sous Flex.</div>
<div>Voici comment faire en utilisant la m&eacute;thode statique <strong>StyleManager.getStyleDeclaration()</strong> et <strong>setStyle()</strong>.</div>
<p>&nbsp;</p>
<pre class="code haxe">private function validateField(field:UIComponent, isValid:Boolean=false):void {
    if(!isValid){
        var cssObj:CSSStyleDeclaration;
        cssObj = StyleManager.getStyleDeclaration(".errorTip");
        cssObj.setStyle("borderColor", "red");
        field.setStyle("errorColor", "red");
        field.errorString = "This field is required";
    } else {
        field.errorString = "";
    }
}
</pre>
<p>&nbsp;</p>
<div>Il suffit maintenant d'appeller cette fonction en lui passant en param&egrave;tre le composant et s'il doit &ecirc;tre affich&eacute; comme une erreur ou non.</div> ]]></description>
		<pubDate>Fri, 16 Jul 2010 12:39:01 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/simuler-un-validator-en-as3.html</guid>
</item><item>
		<title>Ogmo Editor</title>
		<link>http://revolugame.com/blog/ogmo-editor.html</link>
		<description><![CDATA[ <p><a href="http://mattmakesgames.com/" target="_blank">Matt Thorson</a> &agrave; d&eacute;velopp&eacute; un &eacute;diteur de niveau 2D, bas&eacute; sur les tuiles, qui se nomme <a href="http://ogmoeditor.com" target="_blank">Ogmo Editor</a>.  C'est une application <strong>Adobe AIR</strong>, qui peut donc marcher quel que soit l'OS utilis&eacute; (Windows, <span class="caps">Mac OS</span>, Linux).</p>
<p>&nbsp;</p>
<p>Cet &eacute;diteur permet d'exporter simplement au<strong> format XML ou PNG</strong> les niveaux cr&eacute;&eacute;s directement via l'interface. Plusieurs <a href="http://ogmoeditor.com/index.php?p=help" target="_blank">tutoriels</a> sont disponible (en anglais) sur le site.</p>
<p>&nbsp;</p>
<p>Gr&acirc;ce &agrave; cette application, le gain de temps lors du d&eacute;veloppement de jeux est consid&eacute;rable, car plus besoin de devoir cr&eacute;er d'&eacute;diteur sp&eacute;cifique &agrave; votre jeux. La syntaxe XML est suffisement claire, et les options suffisement nombreuses pour vous permettre d'int&eacute;grer tout &ccedil;a &agrave; votre nouveau b&eacute;b&eacute;.</p>
<p>&nbsp;</p>
<p style="width: 100%; text-align: center;"><img src="http://ogmoeditor.com/images/screen1.png" alt="" width="400" height="300" />&nbsp;</p> ]]></description>
		<pubDate>Thu, 27 May 2010 11:33:22 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/ogmo-editor.html</guid>
</item><item>
		<title>Point de départ pour un Tower Defense</title>
		<link>http://revolugame.com/blog/point-de-départ-pour-un-tower-defense.html</link>
		<description><![CDATA[ <p>Il y a quelques temps, je me suis lanc&eacute; dans le d&eacute;veloppement d'un <strong>Tower Defense</strong>. Mais voil&agrave;, avec le boulot, et les projets qui s'accumulent, je ne suis pas all&eacute; bien loin.</p>
<p>&nbsp;</p>
<p>Toutes fois, j'avais impl&eacute;ment&eacute; la cr&eacute;ation du niveau, des monstres, et leurs&nbsp;<strong>d&eacute;placements</strong>. </p>
<p>Ce code peut toujours vous servir de point de d&eacute;part.</p>
<p>&nbsp;</p>
<p>Voici les sources (comment&eacute;es), mais si toutes fois, vous avez besoin de compl&eacute;ments d'infos, laissez un commentaire.</p>
<p>&nbsp;</p>
<h3>Main.hx</h3>
<pre class="code haxe">class Main {
	public static function main():Void {
		new TowerDefense(flash.Lib.current);
	}
}</pre> ]]></description>
		<pubDate>Tue, 27 Apr 2010 12:22:40 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/point-de-départ-pour-un-tower-defense.html</guid>
</item><item>
		<title>Développement d'un RIA : 2ème partie</title>
		<link>http://revolugame.com/blog/developpement-dun-ria-partie2.html</link>
		<description><![CDATA[ <p>Dans cette deuxi&egrave;me partie nous allons aborder le d&eacute;ploiement du <strong>Zend Framework</strong> pour qu'il puisse accueillir nos requ&ecirc;tes en utilisant le format <a class="extern" href="http://en.wikipedia.org/wiki/Action_Message_Format" target="_blank">AMF</a>.</p>
<p>&nbsp;</p>
<p>Il y a deux fa&ccedil;on d'utiliser <strong>Zend_Amf</strong>, soit en <strong>standalone</strong>, soit en utilisant l'int&eacute;gralit&eacute; du framework. C'est ce dernier cas que nous allons aborder. De ce fait, nous pourrons utiliser les classes n&eacute;cessaire pour la connexion &agrave; la base de donn&eacute;es, et utiliser les contr&ocirc;leurs. Le faite de passer par le Framework nous permettra &eacute;galement d'utiliser le <strong>bootstrap </strong>(fichier de configuration de Zend).</p>
<p>&nbsp;</p>
<h3>Installation</h3>
<p>Premi&egrave;re chose &agrave; faire, bien &eacute;videment, il faut r&eacute;cup&eacute;rer l'archive de la derni&egrave;re version sur <a class="extern" href="http://framework.zend.com/download/latest" target="_blank">le site</a>. </p>
<p>Nous allons voir ensemble les principaux points pour la configuration du Framework, d&eacute;taill&eacute; dans le <a class="extern" href="http://framework.zend.com/manual/en/learning.quickstart.intro.html" target="_blank">quickstart</a>. </p>
<p>&nbsp;</p>
<p>Voici l'arborescence de Zend :</p>
<p><img style="vertical-align: middle;" title="Arborescence Zend Framework" src="assets/images/tuto/picture-2.png" alt="" width="253" height="271" /></p>
<p>&nbsp;</p>
<p>Sans rentrer dans le d&eacute;tail, pour que votre application fonctionne, soit votre site est &agrave; la racine et il vous faut d&eacute;finir le <strong>DocumentRoot</strong> dans /public/ soit d&eacute;finir un <strong>VirtualHost </strong>(cf <a class="extern" href="http://framework.zend.com/manual/en/learning.quickstart.create-project.html" target="_blank">quickstart</a>).</p> ]]></description>
		<pubDate>Fri, 16 Apr 2010 10:34:33 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/developpement-dun-ria-partie2.html</guid>
</item><item>
		<title>Développement d'un RIA : 1ère partie</title>
		<link>http://revolugame.com/blog/developpement-dun-ria-partie1.html</link>
		<description><![CDATA[ <p>Voici un tutoriel qui va &ecirc;tre d&eacute;coup&eacute; en trois parties pour comprendre le d&eacute;veloppement d'un <a class="extern" href="http://en.wikipedia.org/wiki/Rich_Internet_Application" target="_blank">RIA</a>. Je ne dis pas d&eacute;tenir la v&eacute;rit&eacute;, mais je vous fais part de mon approche et de ma fa&ccedil;on de travailler lors de d&eacute;veloppements de <strong>grosses applications</strong>.</p>
<p>&nbsp;</p>
<p>En ce qui concerne les choix des technologies, nous allons utiliser <strong>PHP </strong>(car c'est le langage le plus couramment utilis&eacute;) pour l'interaction avec le serveur en se servant du <a class="extern" href="http://framework.zend.com/" target="_blank">Zend Framework</a>,&nbsp;<a class="extern" href="http://www.adobe.com/fr/products/flex/" target="_blank">Flex 3</a> pour le c&ocirc;t&eacute; client (interface), et <a class="extern" href="http://en.wikipedia.org/wiki/MySQL" target="_blank">MySQL</a> pour la base de donn&eacute;es. </p>
<p>&nbsp;</p>
<p>Vous allez me dire, pourquoi utiliser Flex 3 et non pas Flex 4 (qui vient tout juste de sortir). Alors ma r&eacute;ponse est toute simple, Flex 4 vient tout juste de pointer le bout de son nez, les applications d&eacute;velopp&eacute;es avec le sdk de Flex 3 sont nombreuses et les entreprises ne sont pas encore pr&ecirc;te &agrave; tout changer, Flex 3 &agrave; encore quelques ann&eacute;es devant lui. Bien entendu nous reviendrons sur le dernier sdk dans un prochain tuto.</p>
<p>&nbsp;</p>
<p>Dans un premier temps, nous allons voir comment d&eacute;couper et organiser notre application cot&eacute; Flex, utilisation du <strong>mod&egrave;le MVC</strong>, pour ensuite voir comment d&eacute;ployer le <strong>Zend Framework</strong> pour qu'il puisse accueillir notre application Flash, et nous terminerons par les <strong>interactions&nbsp;</strong>entre les diff&eacute;rentes parties.</p>
<p>&nbsp;</p>
<h3>Rappel sur le MVC</h3>
<p>Avant d'aller plus loin, il est bon de se faire un petit rappel. Sans s'&eacute;taler sur le sujet (de nombreux articles sur le web en parlent), le <a class="extern" href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC</a>&nbsp;(ou mod&egrave;le-vue-contr&ocirc;leur) est une architecture permettant de d&eacute;velopper <strong>plus facilement</strong> et <strong>plus proprement</strong> une application, tout en la rendant <strong>r&eacute;utilisable</strong>.</p> ]]></description>
		<pubDate>Thu, 15 Apr 2010 11:17:24 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/developpement-dun-ria-partie1.html</guid>
</item><item>
		<title>De retour</title>
		<link>http://revolugame.com/blog/de-retour.html</link>
		<description><![CDATA[ Après quelques jours hors ligne, <strong>RevoluGame</strong> est de retour, avec un nouveau design et une nouvelle formule dans le but de faciliter l'accès aux différents tuto/astuces. ]]></description>
		<pubDate>Thu, 08 Apr 2010 02:58:07 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/de-retour.html</guid>
</item><item>
		<title>Création d'une librairie d'icone</title>
		<link>http://revolugame.com/blog/creation-dune-librairie-dicone.html</link>
		<description><![CDATA[ <p>Lorsque nous d&eacute;veloppons une application sous Flex, nous avons souvent besoin d'utiliser des <strong>icones</strong>. <br />La solution la plus simple &eacute;videment est la suivante : <br />&nbsp;<br />
</p>
<pre class="code xml">&lt; mx:Button label="Delete" icon="@Embed(source='assets/images/delete.png')"/&gt;
</pre>
<p><br />Mais lorsque cet icone apparait plein de fois dans l'application, on ne va pas la r&eacute;importer &agrave; chaque fois, sinon le code va vide devenir lourd, et &ccedil;a pour rien. <br />&nbsp;<br />La meilleure solution, est de cr&eacute;er une classe qui va ne s'occuper que de &ccedil;a. Nous allons l'appeler IconLibrary (original non ?) <br />&nbsp;<br /></p>
<pre class="code haxe">package fr.revolugame.assets  
{
    /**
     * Les icones utilis&eacute;es dans l'application
     */
    [Bindable]
    public final class IconLibrary
    {
        [Embed(source="assets/images/delete.png")]
        public static const DELETE:Class;
        
        // ...
    }
}</pre>
<p><br />Et lorsque nous voulons l'utiliser dans un mxml : <br />&nbsp;<br /></p>
<pre class="code haxe">&lt; ![CDATA[
    import fr.revolugame.assets.IconLibrary;
]]&gt;

&lt; mx:Button label="Delete" icon="{IconLibrary.DELETE}"/&gt;
 
</pre>
<p>
<br />Cela permettra d'avoir un code nettement plus propre et probablement moins lourd sur de grosses applications. <br />&nbsp;<br />Si nous voulons encore plus optimiser la chose, il est recommand&eacute; de compiler cette librairie dans un swc et de l'importer ensuite dans notre application. Car de ce fait, nous n'aurons pas besoin de recompiler toutes les icones a chaque fois, et pourrons r&eacute;utiliser cette librairie dans d'autre application.</p> ]]></description>
		<pubDate>Mon, 05 Apr 2010 13:48:37 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/creation-dune-librairie-dicone.html</guid>
</item><item>
		<title>Communiquer entre un itemRenderer et son parent</title>
		<link>http://revolugame.com/blog/communiquer-depuis-un-itemrenderer.html</link>
		<description><![CDATA[ <p>Les objets de type liste permettent l'affichage de donn&eacute;es dans notre application. Mais il est souvent utile de vouloir afficher, par exemple, des boutons de suppression, ...<br /><br />Pour ce faire, nous disposons de l'attribut <strong>itemRenderer</strong> qui va nous permettre de remplir notre liste avec autre chose que des donn&eacute;es (voir &eacute;galement des donn&eacute;es mais format&eacute;es diff&eacute;rement).</p>
<p>Il existe deux types d'<strong>itemRenderer</strong>.&nbsp;</p>
<p>Tout d'abord un type que nous pouvons qualifier <strong>d'inline</strong>.<br />Exemple :&nbsp;</p>
<pre class="code haxe">
< mx:DataGrid>
	< mx:columns>
		< mx:DataGridColumn headerText="Nom" />
		< mx:DataGridColumn headerText="">
			< mx:itemRenderer>
				< mx:Component>
					< mx:Button toolTip="Supprimer" />
				< /mx:Component>
			< /mx:itemRenderer>
		< /mx:DataGridColumn>
	< /mx:columns>
< /mx:DataGrid>
</pre>
<p>C'est-&agrave;-dire que l'<strong>itemRenderer</strong> est int&eacute;gr&eacute; directement dans la balise colonne (dans notre cas colonne de la <strong>dataGrid</strong>) en utilisant la balise <strong>&lt;mx :Component&gt;</strong> qui permet de d&eacute;finir une nouvelle partie dans notre MXML. Cette nouvelle partie est vraiment &agrave; part. C'est-&agrave;-dire que les &eacute;l&eacute;ments d&eacute;finis entre les balises <strong>&lt;mx :Component&gt;&lt;/mx :Component&gt;</strong> sont isol&eacute; du reste du MXML.</p>
<p>Dans le cas ou nous avons besoin de communiquer avec le MXML conteneur, nous pouvons utiliser la m&eacute;thode propre &agrave; un component, <strong>outerDocument</strong>. Cette m&eacute;thode permet de sortir du component et donc de communiquer avec le code du parent. Voici un exemple :</p> ]]></description>
		<pubDate>Fri, 19 Mar 2010 00:08:38 +0100</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/communiquer-depuis-un-itemrenderer.html</guid>
</item><item>
		<title>Découper une zone d'image en AS3</title>
		<link>http://revolugame.com/blog/decouper-une-zone-dimage-en-as3.html</link>
		<description><![CDATA[ <div>Voici une petite astuce qui permet <strong>d'optimiser</strong> une application Flash. Plutôt que d'importer les images en <strong>MovieClip</strong>, ce qui se veut être couteux en terme de performance, il vaut mieux passer par la classe <strong>Bitmap</strong> et la classe <strong>BitmapData</strong> pour récupérer les pixels souhaités pour ensuite les afficher. Et par la même occasion, faire une seule requête sur le serveur est moins couteux (par exemple si vous avez une application nécessitant beaucoup de pictogrammes).<br />Voici comment faire.</div>
<br />
<div>Tout d'abord, il faut importer l'image de la bibliothèque : </div>
<pre class="code haxe">
[Embed(source = 'monImage.png')] private var MonImg:Class;
var pic : Bitmap = new MonImg();
</pre>
<div>Maintenant que nous avons notre image au format <strong>Bitmap</strong>, nous pouvons travailler dessus.</div>
<pre class="code haxe">
var bmp1 : BitmapData = pic.bitmapData; // récuperation des données
var bmp2 : BitmapData = new BitmapData(18, 16, true); // création de données, avec la taille de l'image finale
var rect : Rectangle = new Rectangle(0, 0, 18, 16); // création de la zone de découpage
var pt : Point = new Point(0, 0); // création du point de fixation de la zone découpée sur la nouvelle image
bmp2.copyPixels(bmp1, rect, pt); // on copie les pixels dans la nouvelle zone
var bmp : Bitmap = new Bitmap(bmp2); // création de notre nouvelle image
</pre>
<p>Et voilà, nous pouvons maintenant utiliser notre image comme nous le souhaitons, en l'ajoutant à la liste d'affichage par exemple.</p> ]]></description>
		<pubDate>Fri, 22 Jan 2010 11:35:02 +0100</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/decouper-une-zone-dimage-en-as3.html</guid>
</item><item>
		<title>Utiliser l'API YouTube en AS3</title>
		<link>http://revolugame.com/blog/utiliser-lapi-youtube-en-as3.html</link>
		<description><![CDATA[ <div>L'<strong>API YouTube</strong> permet de lire des vid&eacute;os stock&eacute;es sur <a class="extern" href="http://youtube.com">YouTube.com</a> directement dans vos applications Flash. Elle permet &eacute;galement de personnaliser l'apparence du lecteur. Voici une br&egrave;ve introduction.<br />La documentation officielle est pr&eacute;sente <a class="extern" href="http://code.google.com/apis/youtube/flash_api_reference.html" target="_blank">ici</a>.</div><br />
<h3>Récupération de l'API</h3>
<p>Pour pouvoir utiliser l'API dans votre application, il est n&eacute;cessaire de faire une requete pour recuperer le swc sur le serveur de YouTube. Pour ce faire :</p>
<pre class="code haxe">_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
_loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));</pre><br />
<h3>Utilisation de l'API</h3>
<p>Une fois que la librairie &agrave; &eacute;t&eacute; charg&eacute;é, nous pouvons la r&eacute;cuperer et ajouter les &eacute;couteurs sur les diff&eacute;rentes actions :</p>
<pre class="code haxe">private function onLoaderInit(event:Event):void {
    addChild(_loader);
    _loader.content.addEventListener("onReady", onPlayerReady);
    _loader.content.addEventListener("onError", onPlayerError);
    _loader.content.addEventListener("onStateChange", onPlayerStateChange);
    _loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
}</pre>
<p>Une fois que notre lecteur est pr&ecirc;t, nous pouvons charger et lancer la vid&eacute;o :</p>
<pre class="code haxe">private function onPlayerReady(event:Event):void {
    // R&eacute;cup&eacute;ration de l'API youtube.
    _player = _loader.content;
    // On lance notre vid&eacute;o &agrave; partir de son identifiant
    _player.loadVideoById(VIDEO_ID);
    // On d&eacute;finie la taille de la vid&eacute;o
    _player.setSize(480, 270);
}</pre> ]]></description>
		<pubDate>Tue, 29 Dec 2009 14:21:34 +0100</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/utiliser-lapi-youtube-en-as3.html</guid>
</item><item>
		<title>Un Slideshow en Flash</title>
		<link>http://revolugame.com/blog/un-slideshow-en-flash.html</link>
		<description><![CDATA[ <div>
Dans ce tutoriel, nous allons voir comment réaliser un <strong>slideshow simple</strong>, en utilisant les <strong>tweeners</strong> pour les animations, et un timer pour les changements d'images.
<br />Notre slideshow prendra en paramètre un fichier xml, dans lequel apparaitront les informations à afficher.<br /><br />
Ce tutoriel n'est pas là pour vous donner le code source, mais plutôt pour donner les bases pour la réalisation. Nous ne verrons pas en détail toute les classes, mais seulement les parties les plus importantes.
</div><br />
<h3>
Pr&eacute;-requis
</h3>
<div>Pour les animations, nous allons utiliser la librairie <a class="extern" href="http://lib.haxe.org/p/TweenerHX">TweenerHX</a>. Pour l'installer, plusieurs moyens.<br />
Soit directement via <strong>haxelib</strong> : </div>
<pre class="code">
haxelib install TweenerHX
</pre>
<div>Soit en allant récupérer les sources sur le <a class="extern" href="http://www.ralcr.com/ports/tweenerhx/" target="_blank">site</a>.</div><br />
<h3>
Structure du fichier XML
</h3>
<div>
Chaque slide prendra comme paramètre : une image, un titre et un texte. Le titre et le texte étant optionnels.
</div>
<pre class="code xml">
<slideshow>
  <slide>                     
    <titre>First photo</titre>                 
    <img>slide2.jpg</img> 
    <content>Description</content>
  </slide>
  <slide>                     
    <titre>2 photo</titre>                 
    <img>slide3.jpg</img> 
    <content>Description 2</content>
  </slide>
</slideshow>
</pre><br />
<h3>Chargement des données</h3>
<div>
Pour le chargement de notre fichier XML, nous allons utiliser la classe <strong>ChargeurXML</strong> dont voici le contenu :
</div> ]]></description>
		<pubDate>Sat, 24 Oct 2009 12:39:07 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/un-slideshow-en-flash.html</guid>
</item><item>
		<title>Optimisation d'une zone de texte</title>
		<link>http://revolugame.com/blog/optimisation-dune-zone-de-texte.html</link>
		<description><![CDATA[ <p>La classe <strong>TextField</strong> permet d'ajouter du texte dans une application Flash, zone de texte ou zone de saisie. Mais lorsqu'on souhaite utiliser beaucoup d'occurrence de celle-ci, et des les animer, il se peut que les performances en prennent un gros coup. Pour <strong>optimiser</strong> tout ceci, il suffit de passer par la classe <strong>Bitmap</strong>.</p>
<p>La classe <strong>Bitmap</strong> permet, quand &agrave; elle, de repr&eacute;senter des objets d'affichage. Elle va donc nous permettre de transformer nos textes en images. Voici comment faire :</p>
<pre class="code haxe">
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.text.TextField;

var monTexte : TextField = new TextField();
monTexte.text = "Hello World";
monTexte.autosize = flash.text.TextFieldAutoSize.LEFT;

var bmp : BitmapData = new BitmapData(monTexte.width, monTexte.height);
bmp.draw(monTexte);

var bitmap : Bitmap = new Bitmap(bmp);
addChild(bitmap);
</pre>
<p>Une petite <strong>optimisation</strong> qui peut vraiment être utile lors du développement de grosses applications utilisant beaucoup de zone de texte.</p> ]]></description>
		<pubDate>Mon, 14 Sep 2009 20:18:11 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/optimisation-dune-zone-de-texte.html</guid>
</item><item>
		<title>La classe PopUp</title>
		<link>http://revolugame.com/blog/la-classe-popup.html</link>
		<description><![CDATA[ <div>
Dans ce tutoriel, nous allons voir comment développer une classe permettant de créer une fenêtre disposant d'un bouton de fermeture et du système de <strong>Drag and Drop</strong>.
</div><br />
<h3>La partie graphique
</h3>
<p>
Pour commencer, notre classe a besoin de plusieurs paramètres, tel<br />que son parent, sa couleur, ou encore son contenu.</p>
<p>Voici la signature de notre classe : </p>
<pre class="code haxe">public function PopUp(_parent:Stage, _color:uint, content:MovieClip):void</pre>
<p>
Dans le constructeur, nous instancions les différentes parties de notre fenêtre, puis nous dessinons le cadre et l'entête.
</p> ]]></description>
		<pubDate>Wed, 19 Aug 2009 09:46:01 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/la-classe-popup.html</guid>
</item><item>
		<title>Utiliser les curseurs natifs du système dans vos applications</title>
		<link>http://revolugame.com/blog/utiliser-les-curseurs-natifs-du-systeme-dans-vos-applications.html</link>
		<description><![CDATA[ <div>Le Flash Player 10 intègre une nouvelle fonctionnalité particulièrement intéressante.<br />En effet, nous pouvons modifier <strong>le curseur</strong> de la souris en utilisant la propriété <b>cursor</b> de la classe <strong>flash.ui.Mouse</strong>.<br /><br />Pour ce faire, nous devons lui attribuer une des constantes de la classe <strong>flash.ui.MouseCursor</strong> :
<ul>
<li><strong>MouseCursor.AUTO</strong> : l'état par défaut</li>
<li><strong>MouseCursor.ARROW</strong> : le curseur représentant la flèche</li>
<li><strong>MouseCursor.BUTTON</strong> : le curseur en forme de main appuyant sur un bouton</li>
<li><strong>MouseCursor.HAND</strong> : le curseur en forme de main réalisant un glissement</li>
<li><strong>MouseCursor.IBEAM</strong> : le curseur en I de sélection de texte</li>
</ul><br />
Voici un petit exemple :
</div>
<pre class="code haxe">
import flash.ui.Mouse;
import flash.ui.MouseCursor;

Mouse.cursor = MouseCursor.HAND;
</pre>
<div>
L'utilisation de cette classe simplifie le changement de curseur à l'exécution, ce qui permet une meilleure intégration et utilisation de votre application par les utilisateurs qui retrouverons le confort d'utilisation de leur système.
</div> ]]></description>
		<pubDate>Mon, 17 Aug 2009 10:24:11 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/utiliser-les-curseurs-natifs-du-systeme-dans-vos-applications.html</guid>
</item><item>
		<title>Faire une scrollbar en AS3</title>
		<link>http://revolugame.com/blog/faire-une-scrollbar-en-as3.html</link>
		<description><![CDATA[ <p>Dans ce tutoriel, nous allons voir comment cr&eacute;er une <strong>classe r&eacute;utilisable</strong> pour faire une <strong>scrollbar horizontale</strong>. Elle permettra de d&eacute;placer un<strong> contenu dynamique</strong> (texte, image, ...).
</p>
<p>&nbsp;</p>
<h3>
Aspect visuel : la classe graphics
</h3>
<div>
Comme nous souhaitons avoir une classe enti&egrave;rement r&eacute;utilisable, il nous faut pouvoir ajouter des &eacute;l&eacute;ments graphiques ind&eacute;pendamment du projet en cours. Pour cela, nous allons utiliser la classe <strong>graphics</strong> qui va nous permettre de dessiner les composants.
</div>
<p>&nbsp;</p>
<div>
Pour cela, nous avons besoin de plusieurs param&egrave;tres : la largeur et la hauteur de notre scrollbar. Ces deux valeurs seront des attributs de notre classe. Voici notre fonction qui s'occupe de dessiner :
</div>
<pre class="code haxe">private function draw():void {
    var bg : Shape = new Shape();
    bg.graphics.beginFill(_bgColor);
    bg.graphics.lineStyle(0x000000);
    bg.graphics.drawRect(0, 0, _largeur, _hauteur);
    bg.graphics.endFill();
    addChild(bg);
} </pre>
<div>
Et maintenant celle qui dessine le <strong>scroller</strong> (&eacute;l&eacute;ment qui nous permet de d&eacute;placer le contenu) :
</div>
<pre class="code haxe">private function drawScroller():void {
    // petite v&eacute;rification, pour ne pas dessiner de scroller s'il n'y en a pas besoin               
    if (_scrollContent.height &gt; _hauteur) {
        var coeff : Number = _scrollContent.height / _hauteur;
        var tmp_scroll_height : Number = _hauteur / coeff; // pour verif que le scroller n'est pas trop petit
        if (tmp_scroll_height &lt; 20) tmp_scroll_height = 20;
               
        _scroller = new Sprite();
        _scroller.graphics.beginFill(0x000000);
        // on dessine notre rectangle avec un petit d&eacute;calage
        _scroller.graphics.drawRect(2, 2, _largeur - 4, tmp_scroll_height);
        _scroller.graphics.endFill();
               
        _scroller.addEventListener(MouseEvent.MOUSE_DOWN, dragOn);
        _scrollContent.parent.stage.addEventListener(MouseEvent.MOUSE_UP, dragOff);
               
        addChild(_scroller);
        _scroller.buttonMode = true;
               
        // rectangle qui correspond &agrave; la trajectoire du scroller
        rect_scroller = new Rectangle(0, 0, 0, _hauteur - _scroller.height - 4);
    }
} </pre> ]]></description>
		<pubDate>Wed, 15 Jul 2009 00:11:38 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/faire-une-scrollbar-en-as3.html</guid>
</item><item>
		<title>Quelques bonnes pratiques en ActionScript3</title>
		<link>http://revolugame.com/blog/quelques-bonnes-pratiques-en-actionscript3.html</link>
		<description><![CDATA[ <p>
Voici quelques <strong>bonnes pratiques</strong> n&eacute;cessaire &agrave; adopter lors de d&eacute;veloppement d'application en ActionScript3. 
</p>
<p>
Tout d'abord, il est n&eacute;cessaire de toujours typer ses variables afin d'optimiser les performances et <strong>garantir une meilleure gestion des erreurs</strong> &agrave; la compilation et&nbsp; &agrave; l'exécution. Par exemple, pr&eacute;f&eacute;rer 
</p>
<pre class="code haxe">
var i : int = 0; 
</pre>
<p>
&agrave; 
</p>
<pre class="code haxe">
var i = 0;
</pre>
<p>
Par contre, si une variable peut contenir n'importe quel type de données, nous pouvons utilisez le type *.
</p>
<p>
Lorsque vous utilisez une boucle, il est préférable de passer par une <strong>variable de référence</strong>, pour éviter que la machine virtuelle ne réévalue la longueur à chaque itération. Exemple :
</p> ]]></description>
		<pubDate>Sat, 20 Jun 2009 16:34:26 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/quelques-bonnes-pratiques-en-actionscript3.html</guid>
</item><item>
		<title>Mettre une image en noir et blanc</title>
		<link>http://revolugame.com/blog/mettre-une-image-en-noir-et-blanc.html</link>
		<description><![CDATA[ <div>
Pour rendre une image en noir et blanc sans passer par la création d'une nouvelle image, il faut utiliser la propriété filters d'un objet d'affichage. Il faut lui passer en paramètre un tableau de <strong>ColorMatrixFilter</strong>, qui permet d'appliquer <strong>une transformation de matrice</strong> aux couleurs RVBA (Rouge, Vert, Bleu et Alpha) sur l'image d'entrée afin d'obtenir un résultat intégrant un nouvel ensemble de valeurs.
</div>
<br />
<div>
Cette classe permet d'effectuer des modifications de saturation et des rotations de teinte, de définir la luminance de l'alpha et de produire d'autres effets. Vous pouvez appliquer le filtre à tout objet d’affichage (autrement dit, aux objets héritant des propriétés de la classe DisplayObject), tels que <strong>MovieClip</strong>, <strong>SimpleButton</strong>, <strong>TextField</strong> et <strong>Video</strong>, ainsi qu’aux objets <strong>BitmapData</strong>.
</div>
<br />
<div>
Autant vous dire qu'on peut faire ce qu'on veut à partir de cette fonction.
</div>
<pre class="code haxe">
var a : Array< Float > = new Array();

a = a.concat([0.3086, 0.6094, 0.0820, 0.0, 0.0]); // rouge
a = a.concat([0.3086, 0.6094, 0.0820, 0.0, 0.0]); // vert
a = a.concat([0.3086, 0.6094, 0.0820, 0.0, 0.0]); // bleu
a = a.concat([0.0, 0.0, 0.0, 1.0, 0.0]); // alpha

var filtre : ColorMatrixFilter= new ColorMatrixFilter(a);
monClip.filters = [filtre];
</pre> ]]></description>
		<pubDate>Wed, 06 May 2009 18:04:49 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/mettre-une-image-en-noir-et-blanc.html</guid>
</item><item>
		<title>Intégrer Mochiads à un projet haXe/Flash</title>
		<link>http://revolugame.com/blog/integrer-mochiads-a-un-projet-haxeflash.html</link>
		<description><![CDATA[ <div>
Dernièrement, j'ai voulu int&eacute;grer <a class="extern" href="https://www.mochiads.com/r/86194a8f937a492" target="_blank">Mochiads</a> dans un projet Flash développé avec haXe. Mais après mettre rendu sur le site, je me suis aper&ccedil;u, qu'aucune version haxe n'existait. J'ai donc demand&eacute; &agrave; notre cher ami Google ce qu'il en pensait. Apr&egrave;s mainte recherche, je suis tomb&eacute; sur le site de <a class="extern" href="http://hesselboom.com/" target="_blank">Viktor Hesselboom</a> qui explique comment rendre accessible les librairies de Mochiads.
</div><br /><div>
Voici comment les intégrer et les utiliser.
</div><br />
<h3>
Pr&eacute;-requis :
</h3>
<ul>
	<li>Le SDK de Flex (<a class="extern" href="http://opensource.adobe.com/wiki/display/flexsdk/" target="_blank">t&eacute;l&eacute;chargeable ici</a>).</li>
	<li>Les librairies AS3 de Mochiads (<a class="extern" href="http://www.mochimedia.com/" target="_blank">t&eacute;l&eacute;chargeable ici</a>).</li>
	<li>et bien &eacute;videmment <a class="extern" href="http://haxe.org" target="_blank">haXe</a> et <a class="extern" href="http://swfmill.org" target="_blank">SWFmill</a>.</li>
</ul><br />
<h3>
Int&eacute;grer les classes Mochiads &agrave; notre projet</h3>
<p>
D&eacute;compressez l'archive contenant les librairies de Mochiads, puis lancez la commande suivante :
</p>
<pre class="code">
compc -source-path . -output mochi.swc -include-classes mochi.as3.MochiAd mochi.as3.MochiDigits mochi.as3.MochiScores mochi.as3.MochiServices
</pre>
<div>
(compc se trouvant dans le dosser bin du sdk de Flex si vous n'avez pas d&eacute;fini de variable globale)
</div>
<p>
Vous avez maintenant un fichier <strong>swc</strong>.<br /><br />
Un fichier swc est une archive contenant un fichier swf correspondant aux librairies, ainsi que d'autres ressources ne nous intéressant pas.<br /><br />R&eacute;cup&eacute;rez le fichier library.swf (sous Windows, renommez le fichier en .zip).<br />Nous allons maintenant g&eacute;n&eacute;rer les ent&ecirc;tes des classes avec la commande :
</p> ]]></description>
		<pubDate>Fri, 24 Apr 2009 11:32:31 +0200</pubDate>
		<guid isPermaLink="false">http://revolugame.com/blog/integrer-mochiads-a-un-projet-haxeflash.html</guid>
</item>	</channel>
</rss>