<?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; optimisation</title>
	<atom:link href="http://blog.tangane.com/tag/optimisation/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>
	</channel>
</rss>
