<?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/"
	>

<channel>
	<title>Tangane - Solutions for Business Value &#187; RIA</title>
	<atom:link href="http://blog.tangane.com/category/ria/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tangane.com</link>
	<description>Blog de la société Tangane</description>
	<pubDate>Mon, 06 Jul 2009 09:48:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Optimisation d&#8217;une application Flex sur un plan interactif 2D</title>
		<link>http://blog.tangane.com/ria/optimisation-d-une-application-flex-sur-un-plan-interactif-2d-209/</link>
		<comments>http://blog.tangane.com/ria/optimisation-d-une-application-flex-sur-un-plan-interactif-2d-209/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 16:16:38 +0000</pubDate>
		<dc:creator>Fabien Deshayes</dc:creator>
		
		<category><![CDATA[RIA]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=209</guid>
		<description><![CDATA[Voici quelques astuces permettant d&#8217;optimiser et d&#8217;améliorer le rendu d&#8217;un plan 2D en Flex contenant de nombreux éléments (jusqu&#8217;à plusieurs milliers). Dans le cas présent, il s&#8217;agit d&#8217;un plan dynamique : les éléments sont chargées à la volée, le plan peut être agrandi, déplacé, etc. On se trouve donc dans un cas typique de cartographie.
Fluidité [...]]]></description>
			<content:encoded><![CDATA[<p>Voici quelques astuces permettant d&#8217;<strong>optimiser et d&#8217;améliorer le rendu d&#8217;un plan 2D en Flex</strong> contenant de nombreux éléments (jusqu&#8217;à plusieurs milliers). Dans le cas présent, il s&#8217;agit d&#8217;un plan dynamique : les éléments sont chargées à la volée, le plan peut être agrandi, déplacé, etc. On se trouve donc dans un cas typique de cartographie.</p>
<h3>Fluidité des déplacements</h3>
<p>Lorsque l&#8217;on déplace ce plan (ou que l&#8217;on zoome dessus) en utilisant un effet <em>Move </em>ou <em>Zoom</em>, le Flash Player doit redessiner l&#8217;ensemble du plan à chaque itération de l&#8217;effet. Ce traitement peut devenir très lourd : plus il y a d&#8217;éléments et moins le mouvement sera fluide. Une méthode répandue dans beaucoup d&#8217;applications de cartographie réalisées en Flex est de diminuer la qualité de rendu lors de l&#8217;exécution de l&#8217;effet. Une fois l&#8217;exécution terminée, on peut remettre une qualité de rendu supérieure.<br />
Une certaine perte de netteté sera visible lors de l&#8217;effet, mais celle-ci est minime comparée au gain de vitesse (et donc de fluidité du mouvement).<br />
Voici le code a exécuter au début de l&#8217;effet pour diminuer la qualité de rendu de l&#8217;animation Flash :</p>
<pre style="padding-left: 30px;"><span style="font-family: Courier New;">Application.application.stage.quality = StageQuality.LOW;</span></pre>
<p>Voici le code a exécuter à la fin de l&#8217;effet pour remettre la qualité de rendu élevée de l&#8217;animation Flash :</p>
<pre style="padding-left: 30px;"><span style="font-family: Courier New;">Application.application.stage.quality = StageQuality.HIGH;</span></pre>
<h3>Lissage des polices</h3>
<p>Si sur ce plan il y a des éléments de types Label ou Text, on peut constater qu&#8217;en zoomant sur ces éléments, les polices ne sont pas lisses. Pour y remédier, il faut embarquer la police avec le fichier .swf, ce qui permettra d&#8217;avoir un texte lisse peu importe le niveau de zoom. Pour embarquer une police, il faut tout d&#8217;abord récupérer un fichier .swf contenant ces polices. Il est possible d&#8217;en faire soi-même avec le logiciel Flash, mais ceci n&#8217;est pas l&#8217;objet de cet article. L&#8217;intégration de ce fichier se fait via la déclaration CSS suivante :</p>
<pre style="padding-left: 30px;"><span style="font-family: Courier New;">@font-face
</span><span style="font-family: Courier New;">{</span><span style="font-family: Courier New;">
    src:                url('/assets/fonts/myriad.swf');
</span><span style="font-family: Courier New;">    font-family:        'Myriad Pro';</span><span style="font-family: Courier New;">
    font-weight:        bold;
}</span></pre>
<p>Cette méthode n&#8217;est pas l&#8217;unique pour embarquer des polices dans une animation Flash, mais elle offre le meilleur compromis taille du fichier .swf / qualité de rendu.</p>
<h3>Redimensionnement de textes</h3>
<p>Une fois le code précédent inclus, les textes seront propres et lisses. Toutefois, il reste un souci à régler. Vous remarquerez peut-être que lorsque l&#8217;on zoome, les libellés &#8220;vibrent&#8221;, ou tout du moins se déplacent très rapidement de gauche à droite. Pour éviter ce désagrément, il existe un style de la classe Label assez méconnue : fontGridFitType. Ce style accepte trois valeurs : NONE, SUBPIXEL, PIXEL. Elle permet de spécifier la correspondance d&#8217;un TextField sur une grille.<br />
Voici un exemple vous permettant de voir (et ainsi de mieux comprendre) le <a id="om1q" title="fonctionnement de cette propriété fontGridFitType" href="http://rojored.com/gotchas/TextScale.swf" target="_blank">fonctionnement de cette propriété fontGridFitType</a>.<br />
On constate donc que pour éviter cette impression de &#8220;vibration&#8221;, il faut setter la propriété comme ceci (en MXML) :</p>
<pre style="padding-left: 30px;"><span style="font-family: Courier New;">&lt;mx:Label text="Flex" fontGridFitType="none" /&gt;</span></pre>
<p>Il existe bien évidemment d&#8217;autres types d&#8217;optimisations possibles dans ce contexte, comme par exemple l&#8217;utilisation d&#8217;un BitmapData généré à la volée pour afficher une miniature de la carte ou utiliser la solution <a href="http://labs.adobe.com/technologies/alchemy/" target="_blank">Alchemy d&#8217;Adobe</a> pour utiliser des algorithmes codés C ou C++ avec la machine virtuelle du Flash Player.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/ria/optimisation-d-une-application-flex-sur-un-plan-interactif-2d-209/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fiche technologie - Flex</title>
		<link>http://blog.tangane.com/ria/fiche-technologie-flex-65/</link>
		<comments>http://blog.tangane.com/ria/fiche-technologie-flex-65/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 10:44:42 +0000</pubDate>
		<dc:creator>Fabien Deshayes</dc:creator>
		
		<category><![CDATA[RIA]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=65</guid>
		<description><![CDATA[Présentation
La technologie Flex a été créée par Macromedia en 2004 puis reprise par Adobe en 2006. La version actuelle est la 3.2, et une version 4.0 (nom de code Gumbo) est en préparation pour la seconde moitié 2009. Au sens strict, Flex est un framework de développement s&#8217;appuyant sur le Flash Player et offrant des [...]]]></description>
			<content:encoded><![CDATA[<h3>Présentation</h3>
<p>La technologie Flex a été créée par Macromedia en 2004 puis reprise par Adobe en 2006. La version actuelle est la 3.2, et une version 4.0 (nom de code Gumbo) est en préparation pour la seconde moitié 2009. Au sens strict, Flex est un framework de développement s&#8217;appuyant sur le Flash Player et offrant des éléments facilitant la création d&#8217;applications riches. Depuis la version 3, Flex est devenu un projet open source.</p>
<div style="text-align: center;"><em><img class="aligncenter size-full wp-image-87" title="logo_flex" src="http://blog.tangane.com/wp-content/uploads/2009/01/logo_flex.png" alt="logo_flex" width="150" height="150" /></em></div>
<h3>Principes et caractéristiques</h3>
<p>La technologie Flex peut être expliquée en trois couches :</p>
<ul>
<li>L&#8217;interface est décrite à l&#8217;aide d&#8217;une syntaxe MXML (Macromedia XML). On peut y placer et organiser les conteneurs, composants et contrôles selon une hiérarchie. Les fichiers .mxml sont ensuite transcrits en ActionScript (fichiers .as) au moment de la compilation.</li>
<li>La logique applicative sera généralement contenue dans des fichiers ActionScript. L&#8217;ActionScript 3 est le langage utilisé pour créer des exécutables Flash (.swf). C&#8217;est un langage objet basé sur ECMAScript (norme ECMA), ce qui lui donne une forte ressemblance avec le Javascript au niveau grammatical, bien qu&#8217;il soit également assez proche du Java.</li>
<li>Les applications Flex, tout comme ce que l&#8217;on peut créer avec le logiciel Flash CS4, sont de simples exécutables Flash de type .swf. Flex fournit tout de même une page HTML permettant simplement d&#8217;intégrer l&#8217;application sur une page web.</li>
<li>Flex permettant de réaliser des RIA, on peut effectuer un certain nombre de traitements coté client. Néanmoins, son architecture reste la plupart du temps de type client-serveur. Flex (et les diverses communautés open source) offre diverses possibilités de communication avec un serveur, qu&#8217;il s&#8217;agisse du PHP (AMFPHP), du .NET (FluorineFx), du Java (BlazeDS, LCDS) ou toute technologie pouvant exposer des web services.</li>
</ul>
<p>La version actuelle de Flex offre les possibilités suivantes :</p>
<ul>
<li>un ensemble de contrôles &#8220;riches&#8221; pour facilement créer des applications : check box, calendrier, grille de données, combo box, etc.</li>
<li>le &#8220;data binding&#8221;, permettant de lier un champ graphique à une valeur : si cette dernière change, la vue est automatiquement rafraîchie avec la nouvelle valeur</li>
<li>la lecture de médias (vidéo, audio) dans les formats H264, H263, On2VP6, MP3 et des images de types GIF, JPG et PNG</li>
<li>l&#8217;intégration de l&#8217;e4x, permettant de manipuler simplement du XML</li>
<li>la possibilité de personnaliser l&#8217;application avec des feuilles de styles CSS et de les skinner en utilisant des images ou des animations de type .swf</li>
</ul>
<h3>Outils</h3>
<p>La technologie Flex s&#8217;appuie sur l&#8217;éditeur Flex Builder, lui même basé sur Eclipse : il profite donc des possibilités de cet environnement. Précision : Flex Builder existe en version &#8220;stand-alone&#8221; ou en tant que plugin Eclipse. Cet éditeur offre de nombreuses possibilités, se rapprochant de celles disponibles en Java sur Eclipse : complétion, coloration syntaxique, refactoring mais aussi une version WYSIWYG (What You See Is What You Get) des fichiers MXML et CSS, un mode débug et un profiler (pour monitorer la mémoire utilisée).</p>
<div style="text-align: center;"><em><img class="aligncenter size-full wp-image-91" title="flex_builder" src="http://blog.tangane.com/wp-content/uploads/2009/01/flexbuilder.gif" alt="flex_builder" width="490" height="369" /></em></div>
<p>L&#8217;une des forces de Flex est aussi de s&#8217;interfacer correctement avec les autres produits d&#8217;Adobe : il est en effet tout à fait possible d&#8217;utiliser les logiciels Flash, Fireworks ou Illustrator pour créer des skins et des composants Flex. Le lien entre designers et développeurs est très important pour Adobe : c&#8217;est également pour cela qu&#8217;un nouveau logiciel, nommé Flash Catalyst, arrive bientôt. Il permet très simplement de créer une interface Flex (aspect graphique, comportement)  sans avoir à écrire une ligne de code ! L&#8217;ensemble de éléments mis bout à bout forme un workflow designer / développeur, thème récurrent autour de la technologie Flex.</p>
<div style="text-align: center;"><em><img class="aligncenter size-full wp-image-90" title="Flex_designer_developer_workflow" src="http://blog.tangane.com/wp-content/uploads/2009/01/designer_developer_workflow.jpg" alt="Flex_designer_developer_workflow" width="480" height="220" /></em></div>
<p>Adobe propose également des solutions serveur Java pour faciliter la communication et les échanges avec une interface Flex. Il s&#8217;agit de <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS" target="_blank">BlazeDS</a>, projet open source et de Live Cycle Data Services, solution payante. La première est un sous-ensemble de la seconde, mais elles offrent toutes les deux les meilleurs outils de communication Flex - Java. Il existe également d&#8217;autres outils de communication mais ceux-ci ne sont pas gérés par Adobe.</p>
<h3>Points forts</h3>
<p>La technologie Flex s&#8217;appuyant sur le Flash Player, elle profite de ce fait des avantages de ce dernier. Cela lui fait donc profiter de l&#8217;expérience des 10 versions du Player mais également d&#8217;une communauté importante de développeur &#8220;Flash&#8221;.  On peut ainsi citer quelques points forts de Flex :</p>
<ul>
<li>sa capacité de déploiement : le Flash Player est installé sur près de 98% des ordinateurs (source : <a href="http://www.adobe.com/products/player_census/flashplayer/version_penetration.html" target="_blank">chiffres Adobe</a>) en version 9 ou plus. Un site indépendant, <a href="http://www.riastats.com" target="_blank">RIAStats</a>, montre un taux de 97% d&#8217;installation.</li>
<li>son ubiquité : il existe un Flash Player sur Windows, Mac OS et Linux (encore en version 9 sur ce dernier).</li>
<li>son environnement de développement, basé sur Eclipse.</li>
<li>sa capacité à pouvoir dialoguer avec différents languages serveur, en utilisant les différents moyens de communication : les appels http classiques, les web services, les RemoteObject, l&#8217;AMF, etc.</li>
<li>sa gestion des médias : le format Flash est en effet le plus répandu sur Internet pour la diffusion de contenu vidéo (cf. des sites comme Youtube ou dailymotion).</li>
<li>sa large communauté, s&#8217;appuyant en partie sur les nombreux développeurs Flash déjà existants. On trouve de nombreux documents et exemples sur Internet.</li>
</ul>
<h3>Points faibles</h3>
<p>De la même manière que Flex profite des points forts de Flash, elle souffre également des mêmes problèmes. De nombreux développeurs web n&#8217;apprécient pas Flash en mettant en cause son incapacité à créer des applications accessibles, à être correctement référencées ou encore à fonctionner correctement avec les barres de navigation des navigateurs.</p>
<p>Ces affirmations ne sont pas tout à fait vraies. En effet, il existe un ensemble de propriétés permettant de rendre accessible les applications. Les moteurs de recherche commencent à référencer le contenu de fichier .swf et la version 3 de Flex permet d&#8217;interagir correctement avec la barre de navigation des navigateurs. Des efforts sont donc fait mais ces points restent vrais et demanderont forcément un supplément de travail comparé par exemple à un développement d&#8217;une application web en HTML.</p>
<p>De plus, si l&#8217;on constate que la communauté Flash est importante, elle est en grande partie constitué de designers ayant des connaissances en développement, et pas toujours de développeurs confirmés ou d&#8217;architectes. Bien que ce type de profil est en train de se répandre, elle reste encore une minorité dans le monde de l&#8217;ActionScript.</p>
<h3>Le futur</h3>
<p>Une version 4 du framework Flex ainsi que du Flex Builder est en préparation, elles devraient être disponibles durant la seconde moitié de 2009 et apporter leur lots de nouveautés :</p>
<ul>
<li>une amélioration de la collaboration entre design et développement, notamment en simplifiant le processus de skinning de composants pour qu&#8217;il soit très poussé sans avoir à coder en ActionScript, juste avec une description mxml.</li>
<li>l&#8217;ajout de nouveaux éléments pour profiter des capacités du Flash Player 10, notamment un composant vidéo refait et peut-être de la 3D</li>
<li>une amélioration de la productivité en optimisant le compilateur, avec pour objectif des temps divisé par 5 !</li>
<li>une plus grande interaction avec la technologie AIR d&#8217;Adobe</li>
</ul>
<div style="text-align: center;"><em><a href="http://alternativaplatform.com/en/demos/temple/"><img class="aligncenter size-full wp-image-92" title="flex_3d" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_3d.png" alt="flex_3d" width="500" height="227" /></a></em></div>
<p>Une présentation plus complète est disponible sur le site du Flex SDK : <a href="http://opensource.adobe.com/wiki/display/flexsdk/Gumbo+Themes">Gumbo Themes</a> (Gumbo étant le nom désignant Flex 4)</p>
<p>Flex étant devenu récemment un projet open source, il n&#8217;est pas simple à l&#8217;heure actuelle de voir une stratégie à long terme. On peut toutefois penser que cette technologie va continuer à s&#8217;ouvrir pour agrandir encore sa communauté et renforcer sa position. De la même manière, le portage d&#8217;applications Flex sur des téléphones mobiles dépendra de la future version du Flash Player, dont on dit que c&#8217;est son objectif principal.</p>
<h3>Références</h3>
<p>Voici quelques applications réalisées avec Flex :</p>
<ul>
<li>Le <a href="http://flex.org/tour" target="_blank">Tour de Flex</a>, application AIR compilant des possibilités de Flex</li>
<li><a href="https://www.acrobat.com/#/connectnow/ConnectNowBegin" target="_blank">Acrobat.com</a>, un ensemble de services d&#8217;Adobe dont notamment les impressionants Buzzword (traitement de texte avancé) et ConnectNow (pour le travail collaboratif)</li>
<li><a href="http://aviary.com/home" target="_blank">Aviary</a>, un suite d&#8217;outil d&#8217;édition graphique</li>
<li>Le <a href="http://www.sherwin.com/visualizer/" target="_blank">décorateur de Sherwin-Williams</a>, permettant de colorer des pièces d&#8217;intérieur ou des extérieurs avec plus d&#8217;un millier de couleur. Le rendu est bluffant, et l&#8217;on se rend bien compte des possibilités utilisés au niveau du rendu des ombres et des couleurs.</li>
</ul>
<div style="text-align: center;"><em><a href="http://blog.tangane.com/wp-content/uploads/2009/01/aviary.png" target="_blank"><img class="aligncenter size-medium wp-image-88" title="aviary" src="http://blog.tangane.com/wp-content/uploads/2009/01/aviary-300x172.png" alt="aviary" width="300" height="172" /></a></em></div>
<h3>Liens</h3>
<p>Voici quelques liens complémentaires, des sources d&#8217;informations à surveiller pour ceux qui s&#8217;intéressent à la technologie Flex :</p>
<ul>
<li>Le site <a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK" target="_blank">open source du Flex SDK</a></li>
<li>Le site <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS" target="_blank">open source de BlazeDS</a></li>
<li>Le <a href="http://www.adobe.com/devnet/flex/" target="_blank">Flex Developer Center</a>, point d&#8217;entrée vers de nombreuses ressources</li>
<li><a href="http://flex.org/" target="_blank">Flex.org</a>, portail communautaire autour de Flex où l&#8217;on trouve de nombreux composants, un showcase, des offres d&#8217;emploi, etc.</li>
<li>Le <a href="http://blogs.adobe.com/flex/" target="_blank">blog officiel de l&#8217;équipe Adobe Flex</a></li>
</ul>
<h3>Bilan</h3>
<p>En se basant sur le Flash Player, la technologie Flex a su s&#8217;imposer pour devenir très utilisée dès lors que l&#8217;on parle d&#8217;applications RIA. En effet, en s&#8217;appuyant sur l&#8217;écosystème Flash déjà existant, elle a su se développer rapidement et communiquer efficacement. Flash étant par définition une technologie graphique, il est normal que les rendus proposés soient de qualité supérieure aux interfaces &#8220;classiques&#8221;. Le virage open source pris par Flex va certainement changer l&#8217;évolution de cette technologie qui semble atteindre une certaine maturité.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/ria/fiche-technologie-flex-65/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fiche technologie - Silverlight</title>
		<link>http://blog.tangane.com/ria/fiche-technologie-silverlight-45/</link>
		<comments>http://blog.tangane.com/ria/fiche-technologie-silverlight-45/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 13:38:40 +0000</pubDate>
		<dc:creator>Fabien Deshayes</dc:creator>
		
		<category><![CDATA[RIA]]></category>

		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=45</guid>
		<description><![CDATA[
Présentation
Silverlight est la technologie riche de Microsoft. Autrefois appelée WPF/E (Windows Presentation Foundation / Everywhere), cette technologie a été renommée Silverlight puis présentée lors de l&#8217;événement MIX 07 de Microsoft. La première version disponible fut la 1.0 bêta, lancée en même temps que Silverlight 1.1 alpha. A l&#8217;heure actuelle, la version 2 est sortie en [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;"><em><a href="http://www.silverlight.net"><img class="aligncenter size-medium wp-image-104" title="silverlight_logo" src="http://blog.tangane.com/wp-content/uploads/2009/02/silverlight_logo-268x300.jpg" alt="silverlight_logo" width="268" height="300" /></a></em></div>
<h3>Présentation</h3>
<p>Silverlight est la technologie riche de Microsoft. Autrefois appelée WPF/E (Windows Presentation Foundation / Everywhere), cette technologie a été renommée Silverlight puis présentée lors de l&#8217;événement MIX 07 de Microsoft. La première version disponible fut la 1.0 bêta, lancée en même temps que Silverlight 1.1 alpha. A l&#8217;heure actuelle, la version 2 est sortie en octobre 2008 et la version 3 est en préparation (prévue pour courant 2009).<br />
Silverlight est une machine virtuelle ou plugin permettant d&#8217;exécuter des applications Silverlight sur différents systèmes d&#8217;exploitations (Windows, Mac OS, Linux via le projet Moonlight) à l&#8217;intérieur de différents navigateurs (Internet Explorer, Firefox, Safari). Grâce à son moteur de rendu vectoriel, Silverlight souhaite offrir de nouvelles expériences beaucoup plus riches aux utilisateurs. Un raccourci rapide serait de dire que Silverlight est le FlashPlayer de Microsoft. Elle fut en effet proclamée comme telle lors de sa sortie, beaucoup de personnes parlant alors de &#8220;Flash-killer&#8221;.</p>
<h3>Principes et caractéristiques</h3>
<p>Comme la plupart des technologies permettant de réaliser des applications riches, Silverlight se découpe en couches.</p>
<ul>
<li>La première concerne la description de l&#8217;interface, faite à l&#8217;aide d&#8217;une syntaxe XML propre à Microsoft, le XAML. L&#8217;avantage de cette syntaxe est qu&#8217;elle permet de visualiser plus simplement l&#8217;agencement des éléments qu&#8217;avec un langage impératif. De plus, Microsoft fournit un outil (ExpressionBlend) permettant de visualiser le rendu du XAML à la volée (on parle alors de WYSIWYG (What You See Is What You Get)).</li>
<li>La seconde décrit la logique de l&#8217;application, son comportement à avoir en fonction des interactions de l&#8217;utilisateur. Cette partie est réalisée en utilisant l&#8217;un des langages compatibles avec Silverlight, soit du C#, duVisual Basic, du JavaScript, du Python ou du Ruby. Ainsi, n&#8217;importe quel développeur connaissant l&#8217;un de ces langages pourra aisément développer une application Silverlight.</li>
<li>Enfin, la dernière couche concerne la diffusion et le déploiement. Une application Silverlight s&#8217;exécute dans un navigateur, via leplugin du même nom. Il faut donc déposer certains fichiers sur un serveur web : un &#8220;conteneur&#8221; html qui inclura l&#8217;application et un fichier .xap qui est une archive compressée contenant les ressources et le contenu de l&#8217;application.</li>
</ul>
<p>Bien que la version 1 de Silverlight ait apporté quelques fonctionnalités intéressantes (lecture de vidéo haute qualité, DeepZoom), la communauté a vite pointé quelques manques qui ont pour la plupart été comblés avec la version 2. Silverlight propose entre autres les fonctionnalités suivantes :</p>
<ul>
<li>un ensemble de contrôles &#8220;riches&#8221; pour facilement créer des applications : check box, calendrier, grille de données, combo box, etc.</li>
<li>le &#8220;data binding&#8221;, permettant de lier un champ graphique à une valeur : si cette dernière change, la vue est automatiquement rafraîchie avec la nouvelle valeur</li>
<li>la possibilité d&#8217;accéder au DOM (Document Object Model) de la page html servant de &#8220;conteneur&#8221; et ainsi d&#8217;interagir avec</li>
<li>la lecture de médias (vidéo, audio) dans les formats VC1, WMV, WMA, MP3 et des images de types GIF, JPG et PNG</li>
<li>la lecture / écriture de fichiers XML</li>
<li>la lecture d&#8217;un flux ATOM et RSS</li>
<li>l&#8217;intégration du composant LINQ permettant de requêter des données grâce à une syntaxe proche du SQL et de le transcrire en XML</li>
<li>la communication externe avec des appels http, webservice ou la gestion de sockets</li>
</ul>
<p>Bien évidemment, d&#8217;autres fonctionnalités sont disponibles. Pour avoir une vue d&#8217;ensemble, vous pouvez consulter le Silverlight 2.0Developer Reference.</p>
<div style="text-align: center;"><em><a href="http://blog.tangane.com/wp-content/uploads/2009/01/silverlight_2_poster.jpg"><img class="alignnone size-medium wp-image-51" title="silverlight_2_poster" src="http://blog.tangane.com/wp-content/uploads/2009/01/silverlight_2_poster-300x186.jpg" alt="silverlight_2_poster" width="300" height="186" /></a><br />
</em></div>
<h3>Outils</h3>
<p>Le développement d&#8217;une application Silverlight se réalise notamment autour de plusieurs outils. Bien qu&#8217;il existe de nombreux environnements pour développer en .NET, la solutionVisual Studio est la plus à même de convenir aux développeurs Silverlight. Il suffit pour ce faire d&#8217;installer une extension gratuite, les <a id="c910" title="Microsoft Silverlight Tools" href="http://www.microsoft.com/downloads/details.aspx?displaylang=fr&amp;FamilyID=c22d6a7b-546f-4407-8ef6-d60c8ee221ed" target="_blank">Microsoft Silverlight Tools</a>. La suite Visual Studio est un IDE très répandu parmi les développeurs de très bonne qualité, ce qui ne dépayse pas le développeur .NET.<br />
Il faut toutefois savoir que Visual Studio permet de développer le code de &#8220;logique applicative&#8221; ainsi que d&#8217;écrire du XAML, mais il existe un outil bien plus spécifique pour ce dernier : Expression Blend.<br />
Expression est une suite logicielle de création graphique et numérique. Le logiciel Expression Blend va permettre de créer des interfaces riches (donc du XAML) très facilement avec son système WYSIWYG. Les éléments graphiques sont directement positionnés sur l&#8217;application et le XAML est généré, bien qu&#8217;il soit possible de l&#8217;éditer. Attention toutefois, Expression Blend ne permet pas d&#8217;éditer le code de &#8220;logique applicative&#8221;.<br />
Pour pouvoir développer entièrement une application Silverlight, on va alors avoir besoin de deux outils : Visual Studio et Expression Blend.</p>
<h3>Points forts</h3>
<p>Bien qu&#8217;étant une technologie récente, Silverlight a tout de même de nombreux points forts. Microsoft a su produire un plugin de qualité qui, sans pour autant rattraper le retard sur le Flash Player, a su se faire remarquer dans le domaine des RIA, et ce pour plusieurs raisons :</p>
<ul>
<li>tout d&#8217;abord en axant sa communication en partie autour de la qualité vidéo, offrant son propre service de streaming et une très belle qualité d&#8217;image. A l&#8217;heure où la vidéo sur Internet occupe une place prépondérante, Microsoft a donc pu s&#8217;en servir comme fer de lance de sa technologie.</li>
<li>des composants intéressants et novateurs, comme le DeepZoom qui permet de visualiser des images et des documents de grande taille en offrant un agrandissement très fluide.</li>
<li>le support de différents langages de programmation, permettant ainsi de toucher plus de développeurs ainsi qu&#8217;une plus grande communauté.</li>
<li>un environnement de développement éprouvé et apprécié : en effet, Visual Studio est un outil bien connu et très utilisé.</li>
</ul>
<h3>Points faibles</h3>
<p>Toutefois, Silverlight reste une technologie encore jeune. Pour afficher les applications Silverlight, un plugin est nécessaire et son déploiement sur les navigateurs prendra forcément de nombreuses années. Il existe toutefois un site qui donne des chiffres en se basant sur les statistiques de visites de sitesweb par des utilisateurs lambda. On s&#8217;aperçoit que Silverlight est installé sur plus de 16% des ordinateurs, ce qui représente un chiffre relativement faible comparé au taux d&#8217;installation du FlashPlayer, mais impressionnant en sachant que celui-ci n&#8217;est présent que depuis un an et demi.  <a id="tuqh" title="Microsoft annoncait" href="http://www.microsoft.com/presspass/press/2008/oct08/10-13Silverlight2PR.mspx" target="_blank">Microsoft annonçait</a> en octobre 2008 30% de pénétration aux USA et jusqu&#8217;à 50% dans certains pays.<br />
Bien que l&#8217;utilisation de Visual Studio soit un plus dans le développement d&#8217;une application Silverlight, le fait d&#8217;avoir besoin de deux logiciels pour travailler est relativement gênant : il n&#8217;existe pas de réel outil complet pour créer des applications Silverlight. Peut-être dans un futur proche ?<br />
Enfin, les sources et les exemples sur le net reste assez peu nombreux. La technologie reste jeune et ne bénéficie pas, si on la compare à la technologieFlex, d&#8217;un passé de 10 ans (issu de Flash). Les documentations et autres exemples sont donc plus rares, tout comme les compétences.</p>
<h3>Le futur</h3>
<p>Silverlight prépare sa version 3 qui sortira courant 2009, et l&#8217;on sait d&#8217;ores et déjà qu&#8217;elle se dirige vers des fonctionnalités déjà présente dans le Flash Player, notamment :</p>
<ul>
<li>la prise en charge de la norme h264 pour des vidéos de haute qualité</li>
<li>le support de la 3D en utilisant les ressources de la carte graphique</li>
</ul>
<ul>
<li>une vue graphique (WYSIWYG) entièrement intégrée dans l&#8217;outil de développement (Visual Studio)</li>
</ul>
<p>Mais également une amélioration du data-binding et de nouveaux contrôles.</p>
<p>Le futur de Silverlight se dirige également vers les mobiles ! Ce marché très en vue actuellement se verra doté d&#8217;une version spécifique (appelée Silverlight Mobile), basée sur Silverlight 2 et qui sera disponible surWindows Mobile vers la fin 2009.</p>
<h3>Références</h3>
<p>Voici quelques applications réalisées avec Silverlight :</p>
<ul>
<li><a id="u-jr" title="Site d'information de France Télévisions" href="http://info.francetelevisions.fr/" target="_blank">Site d&#8217;information de France Télévisions</a> centré sur de la diffusion vidéo. Utilisé également pour diffuser les JO de Pékin 2008.</li>
<li><a id="wqjw" title="Une mosaïque" href="http://xaml.me/zoommosaic/" target="_blank">Une mosaïque</a> présentant au mieux la fonctionnalité DeepZoom.</li>
<li>Le <a id="z3_n" title="client mail d'AOL" href="http://beta.aol.com/projects.php?project=webmailria&amp;loc=0" target="_blank">client mail d&#8217;AOL</a>, en bêta (accessible avec un compte mail AOL)</li>
<li>Le <a id="h_ow" title="Microsoft Health Demonstrator" href="http://www.mscui.net/PatientJourneyDemonstrator/" target="_blank">Microsoft Health Demonstrator</a>, simulateur d&#8217;une application de gestion d&#8217;un hôpital particulièrement réussie.</li>
</ul>
<p style="text-align: center;"><a href="http://blog.tangane.com/wp-content/uploads/2009/01/silverlight_france_televisions.jpg" target="_blank"><img class="alignnone size-full wp-image-52" title="silverlight_france_televisions" src="http://blog.tangane.com/wp-content/uploads/2009/01/silverlight_france_televisions.jpg" alt="silverlight_france_televisions" width="600" height="387" /></a></p>
<p><em><br />
</em>On peut retrouver de nombreuses démonstrations sur le <a id="sca6" title="showcase du site Silverlight" href="http://silverlight.net/Showcase/" target="_blank">showcase du site Silverlight</a> <em></em></p>
<h3>Liens</h3>
<p>Voici quelques liens complémentaires, des sources d&#8217;informations à surveiller pour ceux qui s&#8217;intéressent à la technologie Silverlight :</p>
<ul>
<li><a href="http://www.microsoft.com/silverlight" target="_blank">Le site de Silverlight sur microsoft.com</a></li>
<li><a href="http://silverlight.net/" target="_blank">silverlight.net : Silverlight community site</a></li>
<li>Le blog <a href="http://cornucopia30.blogspot.com/" target="_blank">.NET 3.0 Cornucopia</a>, plus technique</li>
<li><a href="http://msdn2.microsoft.com/en-us/library/bb190636.aspx" target="_blank">Silverlight sur le MSDN</a></li>
<li>Le <a id="xjy1" title="blog de Scott Guthrie" href="http://weblogs.asp.net/scottgu/default.aspx" target="_blank">blog de Scott Guthrie</a>, où l&#8217;on y retrouve toujours les dernières infos</li>
<li>Le site de <a id="o8vr" title="Silverlight Mobile" href="http://silverlight.net/learn/mobile.aspx" target="_blank">Silverlight Mobile</a></li>
</ul>
<h3>Bilan</h3>
<p>En un peu plus de 2 ans d&#8217;existence, Silverlight a su devenir l&#8217;une des technologies riches principales du marché, porté par les efforts de Microsoft et de ses nombreux partenaires pour la mettre en avant et la valoriser. Malgré que sa jeunesse la desserve sur certains points comme parfois le manque d&#8217;informations ou le taux de pénétration encore &#8220;faible&#8221;, la technologie Silverlight offre de belle capacités techniques en se positionnant entre autres sur le domaine de la vidéo. En utilisant au mieux ses outils existants (Visual Studio) et en misant sur la pluralité des langages, elle est a même de toucher le plus grand nombre de développeurs possibles, et donc d&#8217;utilisateurs.<br />
On suivra donc bien évidemment la troisième version ainsi que le portage sur mobile prévus en 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/ria/fiche-technologie-silverlight-45/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Skinning de composants Flex avec la Creative Suite 4</title>
		<link>http://blog.tangane.com/ria/skinning-de-composants-flex-avec-la-creative-suite-4-4/</link>
		<comments>http://blog.tangane.com/ria/skinning-de-composants-flex-avec-la-creative-suite-4-4/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 09:05:02 +0000</pubDate>
		<dc:creator>Fabien Deshayes</dc:creator>
		
		<category><![CDATA[RIA]]></category>

		<category><![CDATA[Adobe]]></category>

		<category><![CDATA[Creative Suite]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=4</guid>
		<description><![CDATA[Introduction
Il existe différentes manières de personnaliser l&#8217;aspect d&#8217;une application réalisée avec la technologie Flex. On peut par exemple changer simplement les couleurs de certains composants en utilisant les feuilles de styles CSS. Si l&#8217;on souhaite aller plus loin, il est possible de changer l&#8217;apparence des composants en leur appliquant un skin : c&#8217;est ce qu&#8217;on [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p>Il existe différentes manières de personnaliser l&#8217;aspect d&#8217;une application réalisée avec la technologie Flex. On peut par exemple changer simplement les couleurs de certains composants en utilisant les feuilles de styles CSS. Si l&#8217;on souhaite aller plus loin, il est possible de changer l&#8217;apparence des composants en leur appliquant un skin : c&#8217;est ce qu&#8217;on appelle le <strong>skinning</strong>. On peut &#8220;skinner&#8221; un composant à partir d&#8217;une simple image de type .jpg ou .png, mais également à partir de fichiers Flash .swf ou .swc.</p>
<p>Le processus de skinning peut parfois se montrer délicat car il se situe à la frontière entre deux mondes : les designers qui produisent l&#8217;aspect des composants et les développeurs qui doivent lintégrer. Cette phase peut devenir lourde si le développeur ne sait pas ce qu&#8217;il souhaite avoir en entrée ou si le designer n&#8217;a pas une bonne vue d&#8217;ensemble sur la façon de produire des skins Flex. Il faut dire que l&#8217;offre d&#8217;Adobe est assez vaste, notamment au sein de la Creative Suite.</p>
<p>Nous allons donc vous présenter l&#8217;une des manières possibles (il y en a bien évidemment d&#8217;autres) pour skinner des composants Flex avec quatre outils de la Creative Suite, en l&#8217;occurrence Flash, Illustrator, Photoshop et Fireworks. Nous illustrerons chaque cas d&#8217;un exemple sous forme de mini tutoriel, et nous terminerons par un récapitulatif.</p>
<p>Il faut savoir que les skinnings ci-dessous ont été réalisés avec la version 4 de la Creative Suite (sauf pour Flash en version CS3 Professional) mais qu&#8217;il est tout à fait possible de faire les mêmes manipulations sur la version 3. Flex Builder est utilisé en version 3.0, en tant que plug-in d&#8217;Eclipse (version 3.3.2).</p>
<h3>Flash</h3>
<p>Le skinning depuis Adobe Flash semble à première vue le plus simple du fait des points communs entre ce logiciel et Flex, notamment le format (fichiers .swf) et le langage (l&#8217;ActionScript). Voyons dans la pratique un cas de skinning.<br />
Adobe propose quelques éléments permettant d&#8217;automatiser et de simplifier ce processus : nous allons donc les utiliser, sachant qu&#8217;il existe d&#8217;autres manières de faire mais qui peuvent se révéler plus couteuses.</p>
<p>Avant tout, il faut télécharger deux plug-ins :</p>
<ul>
<li><a id="s-uo" title="Flex Skin Design Extensions for Flash" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">Flex Skin Design Extensions for Flash</a></li>
<li><a id="llne" title="Flex Component Skin for Flash CS3 Professional" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">Flex Component Skin for Flash CS3 Professional</a> (compatible CS4)</li>
</ul>
<p>L&#8217;installation de ses éléments se fait très simplement, en ouvrant les fichiers .mxp qui sont en fait du format utilisé par l&#8217;Adobe Extension Manager.</p>
<p>Nous allons maintenant skinner un simple bouton Flex. Pour cela, lançons Flash et choisissons <em>File &gt; New</em>. Dans l&#8217;onglet <em>Templates </em>apparaît alors la catégorie Flex Skins (grâce aux plug-ins installés). Dans notre cas, nous allons choisir <em>Button</em>, mais nous pourrions décider de skinner tous les éléments en choisissant <em>flex_skins</em>.</p>
<div id="spfv" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-23" title="file_new_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/file_new_flash.jpg" alt="file_new_flash" width="656" height="449" /></div>
<p>Un template est alors créé, avec un bouton. Cela diffère des templates sur les autres logiciels de la suite, qui présentent les quatre états du bouton directement.</p>
<div style="text-align: center;"><img class="alignnone size-full wp-image-24" title="button_skin_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/button_skin_flash.jpg" alt="button_skin_flash" width="677" height="342" /></div>
<p>Un simple double clic sur ce bouton nous emmènera en mode édition où l&#8217;on verra apparaître les quatre états (up, over, down, disabled) au niveau de la timeline. Il sera alors possible de modifier ces quatre états séparément.</p>
<div id="t1ba" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-25" title="button_timeline_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/button_timeline_flash.jpg" alt="button_timeline_flash" width="704" height="244" /></div>
<p>Une fois les éléments modifiés, il faut les exporter sous forme de fichier .swc (bibliothèque ActionScript) en faisant <em>File &gt; Export &gt; Export Animation</em>. Après avoir choisi le nom du fichier (attention, ici Flash propose d&#8217;enregistrer en .swf : c&#8217;est après que nous spécifions que nous voulons également un .swc), nous remplissons les propriétés d&#8217;export : il faut bien spécifier la version d&#8217;ActionScript (3.0) pour que cela soit compatible avec Flex 3 (cette remarque est également valable pour la version 2) et cocher la case <em>Export SWC</em>.</p>
<div id="hlf4" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-26" title="export_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/export_flash.jpg" alt="export_flash" width="387" height="581" /></div>
<p>Le reste se déroulera dans le Flex Builder ! Nous allons devoir importer le skin du bouton. Pour cela, assurez vous tout d&#8217;abord que le fichier .swc se trouve dans l&#8217;arborescence de votre projet (dans assets/swc par exemple). Ensuite, choisissons <em>File &gt; Import&#8230;</em> puis <em>Artwork</em> dans le dossier <em>Flex Builder</em> puis <em>Next</em>. Cochons la case <em>SWC or SWF file</em> et cliquons sur <em>Browse </em>pour choisir le fichier fraîchement généré. Il est ensuite possible de choisir l&#8217;endroit où sera générée la feuille de style CSS, son nom ainsi que l&#8217;application dans laquelle elle sera incluse.</p>
<div id="ublg" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-27" title="import_flex_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/import_flex_flash.jpg" alt="import_flex_flash" width="632" height="571" /></div>
<p>Ensuite, cliquons sur <em>Next</em>. Flex proposera automatiquement les éléments du fichier .swc à importer dans le projet. Dans notre cas, il n&#8217;y a qu&#8217;un bouton. Cochons donc celui-ci et cliquons sur <em>Finish</em>. Que se passe-t-il alors ? Flex génère une feuille de style contenant les éléments suivants :</p>
<div id="u:jo" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-28" title="flex_css_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_css_flash.jpg" alt="flex_css_flash" width="401" height="144" /></div>
<p>Cela montre que nous importons une classe de skin complète, et non uniquement des éléments graphiques formant un skin. La feuille de style est également importée dans l&#8217;application :</p>
<div id="ecel" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-29" title="flex_app_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_app_flash.jpg" alt="flex_app_flash" width="681" height="171" /></div>
<p>Il ne nous reste plus qu&#8217;à lancer notre application pour constater le résultat. Nous voilà avec notre bouton skinné mais déformé. On constate qu&#8217;il ne perd pas pour autant sa qualité, ceci étant du au fait que c&#8217;est un élément vectoriel.</p>
<div id="wkro" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-30" title="flex_skin_final_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_skin_final_flash.jpg" alt="flex_skin_final_flash" width="487" height="484" /></div>
<p>Pour résumer, nous avons donc pu créer un skin en utilisant le logiciel Adobe Flash de la Creative Suite via les étapes suivantes :</p>
<ul>
<li>Installation des plug-ins</li>
<li>Génération d&#8217;un fichier .swc à partir d&#8217;un template</li>
<li>Import de ce fichier dans Flex</li>
<li>Génération et inclusion automatique de la feuille de style CSS associée</li>
</ul>
<h3>Illustrator</h3>
<p>Le skinning depuis Adobe Illustrator ressemble à celui de Flash, du fait de sa ressemblance (génération de .swf, vectoriel, etc.). Nous allons donc parfois aller plus vite sur quelques étapes en commun.</p>
<p>De la même manière pour débuter, il faut télécharger un plug-in qui nous permettra de simplifier le processus de skinning : <a id="s-uo" title="Flex Skin Design Extensions for Flash" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">Flex Skin Design Extensions for Illustrator</a>.</p>
<p>Le fichier .zip est à décompresser dans le dossier d&#8217;installation d&#8217;Illustrator (CS3 ou CS4) (exemple : C:Program FilesAdobeAdobe Illustrator CS4). Il ajoutera de nouveaux templates ainsi que de nouveaux scripts. Lançons à présent Illustrator, puis choisissons <em>File &gt; Scripts &gt; Flex Skins &gt; Create Flex 3 Skin</em>. Nous pouvons alors choisir le composant à skinner, ou tous les composants ensemble. Dans notre exemple, nous skinnerons cette fois une CheckBox.</p>
<div id="gvtk" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-31" title="file_new_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/file_new_illustrator.jpg" alt="file_new_illustrator" width="316" height="379" /></div>
<p>Ici, pas de timeline : nous voyons l&#8217;ensemble des différents états, chacun sous forme d&#8217;un symbole. Nous pouvons donc les modifier séparément.</p>
<div id="oc1:" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-32" title="checkbox_skin_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/checkbox_skin_illustrator.jpg" alt="checkbox_skin_illustrator" width="525" height="336" /></div>
<p>Une fois votre skin créé, il faut l&#8217;exporter. Attention à ne pas choisir <em>File &gt; Export</em>, qui est l&#8217;export &#8220;normal&#8221;. Il faut bien penser à passer par <em>File &gt; Scripts &gt; Flex Skins &gt; Export Flex 3 Skin</em>. Il ne reste plus qu&#8217;à choisir le nom du fichier. Ici, ce sera un .swf qui sera généré. On peut par exemple l&#8217;enregistrer dans notre projet Flex, dans le dossier assets/swf. Il n&#8217;y a pas plus de paramètres à remplir avec Illustrator. Nous pouvons donc ouvrir notre projet Flex et, de la même manière que dans l&#8217;exemple sur Flash, importer notre skin en faisant <em>File &gt; Import&#8230;</em> puis <em>Artwork </em>dans le dossier <em>Flex Builder</em>. Cochons la case <em>SWC or SWF File</em> et sélectionnons le skin, exactement comme sous Flash. En faisant <em>Next</em>, nous voyons cependant une différence : il n&#8217;y a plus une seule ligne pour un composant (indiqué par la clé <em>skin</em> dans la colonne <em>Skin Part</em>) mais une ligne par état. Cela vient du fait qu&#8217;en Flash nous exportions une classe typée, alors qu&#8217;ici nous n&#8217;avons que des éléments graphiques.</p>
<div id="kmkd" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-33" title="import_flex_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/import_flex_illustrator.jpg" alt="import_flex_illustrator" width="549" height="478" /></div>
<p>Cliquons sur <em>Finish</em>. Nous avons donc généré un fichier CSS et son import dans notre application. Ce dernier est fait de la même manière que lors d&#8217;un import de skin Flash, mais le fichier CSS présente lui quelques différences :</p>
<div id="d164" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-34" title="flex_css_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_css_illustrator.jpg" alt="flex_css_illustrator" width="694" height="185" /></div>
<p>La classe de skin n&#8217;est plus spécifié mais seulement les éléments graphiques skinnables (ici upIcon, downIcon, etc.). Ces différences sont importantes, nous reviendrons dessus par la suite. Au final, nous avons donc notre CheckBox skinnée telle que sous Illustrator :</p>
<div id="lwc7" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-35" title="flex_skin_final_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_skin_final_illustrator.jpg" alt="flex_skin_final_illustrator" width="315" height="248" /></div>
<p>Pour résumer, nous avons donc pu créer un skin en utilisant le logiciel Adobe Illustrator de la Creative Suite via les étapes suivantes :</p>
<ul>
<li>Installation du plug-in</li>
<li>Génération d&#8217;un fichier .swf à partir d&#8217;un template</li>
<li>Import de ce fichier dans Flex</li>
<li>Génération et inclusion automatique de la feuille de style CSS associée</li>
</ul>
<h3>Photoshop</h3>
<p>Le skinning depuis Adobe Photoshop comporte quelques différences comparé à ceux précédemment présentés, notamment de part son format de sortie (des fichiers .png).</p>
<p>Pour débuter, nous allons également devoir télécharger un plug-in :<a id="s-uo" title="Flex Skin Design Extensions for Flash" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank"> Flex Skin Design Extensions for Photoshop</a>.</p>
<p>Le fichier .zip est à décompresser dans le dossier d&#8217;installation de Photoshop (CS3 ou CS4) (par exemple : C:Program FilesAdobeAdobe Photoshop CS4). Il ajoutera de nouveaux templates ainsi que de nouveaux scripts. Lançons à présent Photoshop, puis choisissons <em>File &gt; Scripts &gt; New Flex Skin</em>. Nous pouvons alors choisir le composant à skinner de la même manière que dans Illustrator. Pour cet exemple, nous allons skinner un Panel. Tous les éléments sont affichés, et disposés dans différents layers.</p>
<div id="t5gq" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-36" title="panel_skin_photoshop" src="http://blog.tangane.com/wp-content/uploads/2009/01/panel_skin_photoshop.jpg" alt="panel_skin_photoshop" width="640" height="482" /></div>
<p>Une fois le composant skinné, nous allons l&#8217;exporter par <em>File &gt; Scripts &gt; Export Flex Skins&#8230;</em> mais attention ! Avant cela, il faut cacher le dossier <em>_HIDE BEFORE EXPORTING</em> pour ne pas générer des éléments en trop. Lors de l&#8217;export, il est demandé de choisir le dossier d&#8217;export. Typiquement, nous pouvons choisir le dossier assets/png de notre projet Flex. Photoshop générera alors un dossier assets (ce qui n&#8217;est pas forcément pratique) contenant tous les .png des éléments du template, selon sa convention de nommage. Allons maintenant dans notre projet Flex et comme précédemment, nous allons passer par <em>File &gt; Import</em> puis nous choisirons <em>Artwork</em>. Ici, nous sélectionnerons <em>Folder of images</em> et pointerons sur le dossier contenant les .png générés.</p>
<div id="s9zh" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-37" title="import_flex_photoshop" src="http://blog.tangane.com/wp-content/uploads/2009/01/import_flex_photoshop.jpg" alt="import_flex_photoshop" width="653" height="560" /></div>
<p>L&#8217;écran suivant propose les mêmes choix que pour Illustrator : il liste en fait l&#8217;ensemble des images ainsi que leurs états associés. C&#8217;est là que leurs noms sont importants : sans cela les éléments ne seraient pas reconnus. Après avoir tout coché, nous avons donc une feuille de style CSS générée ainsi que l&#8217;import dans le fichier de l&#8217;application. Le fichier CSS se présente de la même manière que dans Illustrator, c&#8217;est à dire en séparant les composants graphiques. A la différence près que les éléments sont des images de type .png et non un nom de symboles dans un fichier .swf. Le résultat final sera donc un Panel ressemblant à cela :</p>
<div id="tqm0" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-39" title="flex_skin_final_photoshop" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_skin_final_photoshop.jpg" alt="flex_skin_final_photoshop" width="483" height="481" /></div>
<p>Il faut noter que l&#8217;on peut percevoir une perte de qualité, du fait que le skin est une image qui pourra se retrouver déformée. Le rendu final est donc moins propre qu&#8217;avec des éléments vectoriels.</p>
<p>Nous avons créé un skin en utilisant le logiciel Adobe Photoshop de la Creative Suite via les étapes suivantes :</p>
<ul>
<li>Installation du plug-in</li>
<li>Génération de fichiers .png à partir d&#8217;un template</li>
<li>Import de ces fichiers dans Flex</li>
<li>Génération et inclusion automatique de la feuille de style CSS associée</li>
</ul>
<h3>Fireworks</h3>
<p>Le skinning depuis Adobe Fireworks générera également en sortie des images de type .png. Pour cela, il nous faudra également un plug-in : <a id="s-uo" title="Flex Skin Design Extensions for Flash" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">Flex Skin Design Extensions for Fireworks</a>.</p>
<p>L&#8217;installation de ce plug-in s&#8217;effectue en ouvrant le fichier .mxp qui sera utilisé par l&#8217;Adobe Extension Manager. Lançons à présent Fireworks, puis choisissons <em>Commands &gt; Flex Skinning &gt; New Flex Skin</em>. Nous pouvons alors choisir le composant à skinner de la même manière que dans Illustrator et Photoshop. Pour cet exemple, nous allons skinner un TextInput. Tous les éléments sont affichés, et disposés dans différents layers.</p>
<div id="r06a" style="padding: 1em 0pt; text-align: center;"><img style="width: 569px; height: 347px;" src="http://docs.google.com/File?id=dgrvhczh_81dph6kjg7_b" alt="" /></div>
<p>Une fois le composant skinné, nous allons l&#8217;exporter par <em>Commands &gt; Flex Skinning &gt; Export Flex Skin </em>et choisir le dossier d&#8217;export comme par exemple assets/png dans notre projet Flex. Fireworks générera dans ce dossier les images .png se rapportant aux états du composant skinné. L&#8217;import de ces ressources s&#8217;effectuera dans le projet Flex de la même manière qu&#8217;auparavant, en choisissant <em>File &gt; Import&#8230;</em> puis <em>Artwork</em> dans <em>Flex Builder</em>. Ensuite, il faut choisir <em>Folder of images</em> et sélectionner le dossier contenant les images générées.</p>
<div id="p:3b" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-40" title="import_flex_fireworks" src="http://blog.tangane.com/wp-content/uploads/2009/01/import_flex_fireworks.jpg" alt="import_flex_fireworks" width="565" height="600" /></div>
<p>De nouveau, Flex Builder génère une feuille de style CSS ainsi que l&#8217;import de ce fichier dans l&#8217;application. La feuille de style pointe sur les fichiers .png. Ainsi, on obtiendra notre TextInput skinné :</p>
<div id="r56q" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-41" title="flex_skin_final_fireworks" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_skin_final_fireworks.jpg" alt="flex_skin_final_fireworks" width="340" height="345" /></div>
<p>Le skin étant une image, on pourra constater une perte de qualité dans le cas d&#8217;un agrandissement de la zone de texte. Cela vient du format d&#8217;image .png.</p>
<p>Nous avons donc pu créer un skin en utilisant le logiciel Adobe Illustrator de la Creative Suite via les étapes suivantes :</p>
<ul>
<li>Installation du plug-in</li>
<li>Génération de fichiers .png à partir d&#8217;un template</li>
<li>Import de ces fichiers dans Flex</li>
<li>Génération et inclusion automatique de la feuille de style CSS associée</li>
</ul>
<h3>Conclusion</h3>
<p>Voici un tableau récapitulatif des différences de skinning entre les 4 outils de la Creative Suite :</p>
<div>
<table id="felc" class="zeroBorder" border="0" cellspacing="0" cellpadding="3" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Outil<br />
</strong></td>
<td width="25%"><strong>Fichier(s) généré(s)<br />
</strong></td>
<td width="25%"><strong>Import<br />
</strong></td>
<td width="25%"><strong>Type de skin<br />
</strong></td>
</tr>
<tr>
<td width="25%"><em><strong>Flash<br />
</strong></em></td>
<td width="25%">une bibliothèque .swc</td>
<td width="25%">CSS généré par Flex Builder</td>
<td width="25%">Classe skinnée</td>
</tr>
<tr>
<td width="25%"><em><strong>Illustrator<br />
</strong></em></td>
<td width="25%">un fichier .swf</td>
<td width="25%">CSS généré par Flex Builder</td>
<td width="25%">Eléments graphiques vectoriels</td>
</tr>
<tr>
<td width="25%"><em><strong>Photoshop<br />
</strong></em></td>
<td width="25%">un dossier avec des images .png</td>
<td width="25%">CSS généré par Flex Builder</td>
<td width="25%">Images</td>
</tr>
<tr>
<td width="25%"><em><strong>Fireworks<br />
</strong></em></td>
<td width="25%">un dossier avec des images .png</td>
<td width="25%">CSS généré par Flex Builder</td>
<td width="25%">Images</td>
</tr>
</tbody>
</table>
</div>
<p>De ce tableau ressort deux différences importantes. Tout d&#8217;abord au niveau du fichier généré : alors que Flash et Illustrator ne génèrent qu&#8217;un fichier pouvant contenir un ou plusieurs skins, Photoshop et Fireworks génèrent autant de fichiers que d&#8217;états par skin, ce qui peut vite devenir lourd dans le cas d&#8217;une application de taille importante où l&#8217;on aurait une dizaine de composants à skinner.</p>
<p>L&#8217;autre différence majeure se situe au niveau du type de skin : en effet, alors que Photoshop et Fireworks ne produisent que des bitmaps, Illustrator et Flash génèrent des images vectorielles, ce qui offrira une plus grande souplesse si l&#8217;on souhaite modifier les dimensions de certains composants. <strong>On comprend donc facilement que l&#8217;on préférera utiliser Illustrator ou Flash (si cela est possible) pour skinner nos applications Flex</strong>.</p>
<p>Il existe toutefois une différence intéressante entre les éléments générés par Flash et Illustrator. Ce dernier créé un fichier .swf contenant des symboles qui ne sont que des éléments graphiques qui serviront à surcharger l&#8217;apparence de composants sur l&#8217;un de ses états (par exemple : états up, down, over, disabled). Flash génère lui une bibliothèque contenant une classe de type &#8220;Skin&#8221;. Elle permet de définir plus de comportements sur un composant, comme par exemple les transitions entre ses différents états. On parle alors de <strong>programmatic skinning</strong>.</p>
<p>Au final, les outils de la Creative Suite permettent de créer de manière relativement automatisé des skins pour une application Flex. Mais ce qui reste le plus important pour garder une certaine flexibilité et une simplicité dans le processus est la communication entre les designers et les développeurs. L&#8217;idéal est de mettre en place un ensemble de bonnes pratiques pour le skinning, comme par exemple :</p>
<ul>
<li>Définir une règle de nommage (exemple : btn_red_up, btn_blue_down, txtarea_light, etc.).</li>
<li>N&#8217;utiliser qu&#8217;un seul logiciel pour produire des skins</li>
<li>Conserver une trace des différentes évolutions des skins</li>
</ul>
<p>En mettant ce genre de pratiques en places, il vous sera alors possible d&#8217;avoir un processus fiable de skinning de vos applications Flex en utilisant la Creative Suite d&#8217;Adobe.</p>
<p>Cet article a été écrit en se basant notamment sur l&#8217;<a href="http://www.adobe.com/devnet/flex/articles/skins_styles.html" target="_blank">article de référence d&#8217;Adobe : http://www.adobe.com/devnet/flex/articles/skins_styles.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/ria/skinning-de-composants-flex-avec-la-creative-suite-4-4/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
