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

<channel>
	<title>AS_Blog &#187; Développement</title>
	<atom:link href="http://www.tsoin.com/asblog/category/developpement/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tsoin.com/asblog</link>
	<description>AS3, Flash, Flex, AIR</description>
	<lastBuildDate>Tue, 20 Dec 2011 15:21:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Carrousel &#8211; ThreeJS &amp; Curved Plane</title>
		<link>http://www.tsoin.com/asblog/2011/11/24/carrousel-threejs-curved-plane/</link>
		<comments>http://www.tsoin.com/asblog/2011/11/24/carrousel-threejs-curved-plane/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 15:27:15 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[Curved Plane]]></category>
		<category><![CDATA[Lights]]></category>
		<category><![CDATA[MrDoob]]></category>
		<category><![CDATA[ThreeJS]]></category>
		<category><![CDATA[webgl]]></category>
		<category><![CDATA[WebStorm]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=1089</guid>
		<description><![CDATA[Pour une version de mon site en Flash ( une de plus qui n&#8217;est jamais sortie ), j&#8217;avais développé un carrousel Papervision avec des curved plane. Voulant avancé dans l&#8217;exploration de ThreeJS, j&#8217;ai commencé une nouvelle version de ce carrousel &#8230; <a href="http://www.tsoin.com/asblog/2011/11/24/carrousel-threejs-curved-plane/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pour une version de mon site en Flash ( une de plus qui n&#8217;est jamais sortie ), j&#8217;avais développé un carrousel Papervision avec des curved plane. Voulant avancé dans l&#8217;exploration de ThreeJS, j&#8217;ai commencé une nouvelle version de ce carrousel avec le moteur 3D de <a href="http://mrdoob.com/" target="_blank">Mr.doob &raquo;</a>.</p>
<p>Comme éditeur, j&#8217;ai utilisé <a href="http://www.jetbrains.com/webstorm/index.html" target="_blank">WebStorm &raquo;</a>, utilisé par le studio HelloEnjoy ( auteur du fameux <a href="http://lights.elliegoulding.com/" target="_blank">Lights d&#8217;Ellie Goulding &raquo;</a> ). WebStorm propose l&#8217;auto-completion, le refactoring&#8230; Une bonne découverte et un outil indispensable pour le développement js, si vous en connaissez d&#8217;autres, je suis preneur !</p>
<p>Voici donc une première version des curved plane ThreeJS ( non cliquable pour le moment&#8230; ):<br />
<center><a href="http://www.tsoin.com/lab/webgl/00007.html"><img src="http://tsoin.com/asblog/images/carrousel_webgl.jpg"></a></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2011/11/24/carrousel-threejs-curved-plane/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site Full Flash&#8230; This is The End ? ( ou l&#8217;arrêt du développement de Flash sur mobile )</title>
		<link>http://www.tsoin.com/asblog/2011/11/10/site-full-flash-this-is-the-end/</link>
		<comments>http://www.tsoin.com/asblog/2011/11/10/site-full-flash-this-is-the-end/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 11:20:06 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Communauté]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[FlashPlayer]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[Ben Forta]]></category>
		<category><![CDATA[Full Flash]]></category>
		<category><![CDATA[Galaxy Tab]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Grant Skinner]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Lee Brimelow]]></category>
		<category><![CDATA[Marvin Blase]]></category>
		<category><![CDATA[Peter Elst]]></category>
		<category><![CDATA[Playbook]]></category>
		<category><![CDATA[RIM]]></category>
		<category><![CDATA[Samsung]]></category>
		<category><![CDATA[Stefan Richter]]></category>
		<category><![CDATA[Steve Jobs]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=987</guid>
		<description><![CDATA[Séisme dans la communauté Flash, Adobe annonce officiellement l&#8217;arrêt du développement du Flash Player pour mobile au profit de l&#8217;HTML5 », et des applications AIR. Adobe continuera à supporter les actuelles configurations Android et PlayBook avec des mises à jour &#8230; <a href="http://www.tsoin.com/asblog/2011/11/10/site-full-flash-this-is-the-end/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Séisme dans la communauté Flash, <a href="http://blogs.adobe.com/conversations/2011/11/flash-focus.html" target="_blank">Adobe annonce officiellement l&#8217;arrêt du développement du Flash Player pour mobile au profit de l&#8217;HTML5 »</a>, et des applications AIR. Adobe continuera à supporter les actuelles configurations Android et PlayBook avec des mises à jour de sécurité, mais la prochaine version du player &laquo;&nbsp;Desktop&nbsp;&raquo; ( la version 12 actuellement en développement ), ne sera pas porté sur mobile et aucune version ne verra donc le jour sur iOS ( ce qui n&#8217;est pas une surprise, mais l&#8217;espoir fait vivre ). Même si la décision de Steve Jobs de ne pas inclure le player d&#8217;Adobe sur ces appareils mobiles a été un véritable coup dur, la présence du player sur Android &amp; Blackberry semblait remettre un équilibre entre Adobe et Apple. Samsung ira même jusqu&#8217;à utiliser la présence du Player sur sa Galaxy Tab, comme un argument de vente &laquo;&nbsp;Access to millions web pages with Flash&nbsp;&raquo; :</p>
<p><center><object style="height: 390px; width: 640px;" width="640" height="360" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/QL8ePbYsdc8?version=3&amp;feature=player_detailpage#t=33s" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><embed style="height: 390px; width: 640px;" width="640" height="360" type="application/x-shockwave-flash" src="http://www.youtube.com/v/QL8ePbYsdc8?version=3&amp;feature=player_detailpage#t=33s" allowFullScreen="true" allowScriptAccess="always" allowfullscreen="true" allowscriptaccess="always" /></object></center></p>
<p>Oui, mais&#8230;. honnêtement, malgré la résolution des problèmes de performances et de batterie, surfer sur un site Flash sur un navigateur mobile, n&#8217;était pas des plus simple, l&#8217;ergonomie de la plupart des sites ( pour ne pas dire tous ) n&#8217;est simplement pas adaptée au tactile et à ce format d&#8217;écran ! Bien sur, je ne vais pas renié ma &laquo;&nbsp;spécialité&nbsp;&raquo;, mais la monté en force d&#8217;HTML5, et l’entêtement d&#8217;Apple poussait vers la décision d&#8217;Adobe.</p>
<p><strong>Quel avenir ?</strong></p>
<p>Je ne parlerais pas ici des applications AIR, qui continueront à garder leur légitimité, et j&#8217;espère que les équipes utilisées pour le portage mobile seront transférer sur le développement de AIR ( <a href="http://www.lemonde.fr/technologies/article/2011/11/09/adobe-va-supprimer-750-postes_1600927_651865.html" target="_blank">Adobe va supprimer 750 postes »</a> ). Mais pour le développement de site, à l&#8217;heure ou l&#8217;usage des supports mobiles se démocratisent, comment continuer à proposer un site qui ne sera pas compatible à 100% ? L&#8217;internaute attend de retrouver sur sa tablette le même site qu&#8217;il peut voir sur son laptop, pas une version dégradé. L&#8217;annonce d&#8217;Adobe va donc changer pas mal de choses, plus questions de se &laquo;&nbsp;planquer&nbsp;&raquo; derriere les avancées futures des adaptations du Flash Player pour convaincre les clients de choisir un site full Flash ( oui, oui, ça existe ). Faut-il augmenter les coûts et multiplier les versions d&#8217;un site pour qu&#8217;il soit compatible ( Flash, HTML5 ), ou ne faire qu&#8217;une version ? La réponse me semble ( malheureusement pour les flasheurs ) toute faite&#8230;</p>
<p>Est-ce donc l&#8217;annonce de la fin de Flash tel que nous le connaissons aujourd&#8217;hui ? Ne sera-t-il plus utilisé que spécifiquement sur des applications qu&#8217;HTML5 ne permet pas (encore) de réalisé ? Adobe décide de &laquo;&nbsp;pousser&nbsp;&raquo; HTML5, mais les spécifications ne sont pas définitives, les navigateurs pas tous prêts, et les outils que présentes Adobe ( Edge ), ne sont pas des plus convaincants, pour les flasheurs en tout cas&#8230;</p>
<p>L&#8217;année 2012 s&#8217;annonce comme l&#8217;année du HTML5, 2011 l&#8217;avait déjà amorcé, mais Adobe a décidé d&#8217;accélérer encore plus le mouvement&#8230; Une période d&#8217;adaptation et de reflexion se prepare donc, pour le confort de l&#8217;internaute, notamment utilisteur de produit Apple ( &laquo;&nbsp;merci&nbsp;&raquo; Steve Jobs !? )&#8230;</p>
<p>Il me semble que c&#8217;est mon premier post &laquo;&nbsp;rédactionnel&nbsp;&raquo;, soyez donc indulgent sur mon écriture, l&#8217;exercice n&#8217;est pas facile, le sujet est vaste ( j&#8217;aurais aussi pu parler de l&#8217;Open Screen Project, et du portage sur les TV, des efforts consentis par Samsung et Google pour suppoter Flash&#8230; )<br />
Merci de votre compréhension !</p>
<p>Les réactions de la communauté ( juste une sélection ) :<br />
<a href="http://gskinner.com/blog/archives/2011/11/flash-player-mobile-a-post-mortem.html" target="_blank">Grant Skinner &#8211; Flash Player Mobile, a Post Mortem »</a><br />
<a href="http://www.peterelst.com/blog/2011/11/09/et-tu-adobe-flash-player-homicide/" target="_blank">Peter Elst &#8211; Et tu, Adobe? Flash Player homicide »</a><br />
<a href="http://www.therealtimeweb.com/index.cfm/2011/11/10/flash-mobile-announcements" target="_blank">Stefan Richter &#8211; One Day On: Reflections On Adobe&#8217;s Flash Announcements »</a><br />
<a href="http://www.leebrimelow.com/?p=3151" target="_blank">Lee Brimelow &#8211; Flash to Focus on Apps for Mobile »</a><br />
<a href="http://www.beautifycode.com/flash-mobile-died-so-what" target="_blank">Marvin Blase &#8211; Flash Mobile Died. So What? »</a><br />
<a href="http://forta.com/blog/index.cfm/2011/11/9/Some-Thoughts-On-Flash-And-Devices" target="_blank">Ben Forta &#8211; Some Thoughts On Flash And Devices »</a></p>
<p>[UPDATE]<br />
<a href="http://fernando-comet.blogspot.com/2011/11/flash-is-dead-steve-jobs-is-dead.html" target="_blank">Fernando Comet &#8211; Flash is dead, Steve Jobs is dead »</a><br />
<a href="http://www.philterdesign.com/?p=245" target="_blank">Phil Chung &#8211; Open Letter to Flash »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2011/11/10/site-full-flash-this-is-the-end/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flash Player, Navigateur, OS et performance</title>
		<link>http://www.tsoin.com/asblog/2008/12/19/flash-player-navigateur-os-et-performance/</link>
		<comments>http://www.tsoin.com/asblog/2008/12/19/flash-player-navigateur-os-et-performance/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 15:36:19 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Comparatifs]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[CopyPixels]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=207</guid>
		<description><![CDATA[Excellent article de Jensa sur Flashgamer, qui compare les performances de la fonction copyPixels sur différents OS (Mac / Win XP / Win Vista ), sur différents navigateurs (Firefox, Opera, Chrome, Safari, IE&#8230;), et sur différents processeurs ( Core 2 &#8230; <a href="http://www.tsoin.com/asblog/2008/12/19/flash-player-navigateur-os-et-performance/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Excellent article de Jensa sur <a href="http://www.flashgamer.com" target="_blank">Flashgamer</a>, qui compare les performances de la fonction copyPixels sur différents OS (Mac / Win XP / Win Vista ), sur différents navigateurs (Firefox, Opera, Chrome, Safari, IE&#8230;), et sur différents processeurs ( Core 2 Duo, Quadcore Xeon&#8230;), et les résultats sont assez impressionnants :</p>
<p><b>FlashPlayer 10 sur Opera / Win XP est 4 fois plus rapide que sur Safari / Mac</b></p>
<p>Vous trouverez l&#8217;ensemble de l&#8217;article, dont les résultats comparatifs et les fichiers AS de test, sur le site de <a href="http://www.flashgamer.com/2008/12/copypixels_and_browser_speed_l.html" target="_blank">Flashgamer : CopyPixels and browser speed limits</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/12/19/flash-player-navigateur-os-et-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SWFAddress 2.2</title>
		<link>http://www.tsoin.com/asblog/2008/12/18/swfaddress-22/</link>
		<comments>http://www.tsoin.com/asblog/2008/12/18/swfaddress-22/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 15:43:24 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[SWFAddress]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=203</guid>
		<description><![CDATA[La nouvelle version de SWFAddress vient d&#8217;être publiée, les nouveautés de la version 2.2 sont les suivantes : - Refactored JavaScript implementation - New SWFAddress.swc AS3 component - New CS4 based Splash screen sample - New Digg API sample - &#8230; <a href="http://www.tsoin.com/asblog/2008/12/18/swfaddress-22/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>La nouvelle version de SWFAddress vient d&#8217;être publiée, les nouveautés de la version 2.2 sont les suivantes :<br />
- Refactored JavaScript implementation<br />
- New SWFAddress.swc AS3 component<br />
- New CS4 based Splash screen sample<br />
- New Digg API sample<br />
- New up() method for easier deep linking path navigation<br />
- New XSS protection that doesn&#8217;t affect special characters<br />
- Support for Internet Explorer 8<br />
- Support for custom HTTP status messages in the SEO sample<br />
- Improved title handling<br />
- Improved unload event handling for IE<br />
- Updated Rails sample<br />
- Fixed getBaseURL() for AS3<br />
- Fixed Safari 2.0-2.0.3 support<br />
- Build-in fix for the Firefox 3/Mac OSX blinking effect<br />
- Additional onLoad fix for application/xml content type<br />
- Fixed optional options parameter for the popup method<br />
- Cross platform build script<br />
- Various optimizations</p>
<p>A noté qu&#8217;une <a href="http://www.asual.com/netaddress/" target="_blank">version pour Silverlight</a> devrait sortit l&#8217;année prochaine&#8230;</p>
<p><a href="http://www.asual.com/blog/swfaddress/2008/12/18/swfaddress-22.html" target="_blank">La page des nouvautés de SWFAddress 2.2 &raquo;</a><br />
<a href="http://www.asual.com/swfaddress/" target="_blank">Télécharger SWFAddress 2.2 &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/12/18/swfaddress-22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KapInspect par KapIT</title>
		<link>http://www.tsoin.com/asblog/2008/12/16/kapinspect-par-kapit/</link>
		<comments>http://www.tsoin.com/asblog/2008/12/16/kapinspect-par-kapit/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 15:41:46 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[KapInspect]]></category>
		<category><![CDATA[KapIt]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=159</guid>
		<description><![CDATA[KapIT propose depuis quelques mois un outil de debbugage et d&#8217;inspection d&#8217;application Flex,]]></description>
			<content:encoded><![CDATA[<p>KapIT propose depuis quelques mois un outil de debbugage et d&#8217;inspection d&#8217;application Flex, <a href="http://lab.kapit.fr/display/kapinspect/Kap%20Inspect target="_blank">KapInspect</a>.<br />
Très complet et très utile, à la hauteur de la renommée de KapIT en somme, KapInspect est l&#8217;outil indispensable du développeur Flex (l&#8217;équivalent de la Web Developer Toolbar de Firefox)</p>
<p>Voici les possibilités qu&#8217;offrent KapInspect :<br />
- Inspection des objets (Bitmap de visualisation, liste des propriétés..)<br />
- Filtrage des proriétés par type ( String, Number, Object&#8230;)<br />
- Mémoire utilisée en temps réel<br />
- Modification style<br />
- Ciblage des éléments<br />
- Evènements<br />
- Statistiques<br />
- &#8230;</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/12/overview.png" width="620" height="405" class="cadre" /></center></p>
<p>Pour utiliser KapInspect, il faut vous <a href="http://lab.kapit.fr/login.action" target="_blank">identifier &raquo;</a> et ensuite télécharger le package KapInspect.zip.<br />
Copier KapInspect.swc dans le dossier de votre projet, et l&#8217;ajouter dans le library Path ( Project > Properties > Flex Build Path > Librairy Path > Add SWC ).<br />
Il faut suffit alors d&#8217;instancier KapInspect de cette façon</p>
<div class="codeAS">&lt;kapit:KapInspect /&gt;</div>
<p>Vous pouvez instancier KapInspect en code, ou alors ne pas vouloir charger toute la librairie dans votre application Flex, vous pouvez voir de quelle façon sur la <a href="http://lab.kapit.fr/display/kapinspect/Integration+Guide" target="_blank">page de présentation de KapInspect.</a></p>
<p>Gage de qualité KapInspect est visible dans l&#8217;application AIR : <a href="http://flex.org/tour" target="_blank">TourDeFlex</a></p>
<p>Vous pouvez retrouver KapInspect et d&#8217;autre applications sur le <a href="http://lab.kapit.fr" target="_blank">Lab de KapIt &raquo;</a></p>
<p><a href="http://lab.kapit.fr/display/kapinspect/Kap%20Inspect" target="_blank">La page de KapInspect &raquo;</a><br />
<a href="http://lab.kapit.fr/display/kapinspect/Integration+Guide" target="_blank"> Le guide d&#8217;intégration de KapInspect &raquo;</a><br />
<a href="http://lab.kapit.fr/display/kapinspect/Product+guide" target="_blank">Le guide du développeur &raquo;</p>
<p>via <a href="http://www.flex888.com/945/kapinspect-x-ray-glasses-for-debugging-and-maintaining-flexas3-applications.html" target="_blank">Flex888 &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/12/16/kapinspect-par-kapit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le décalage binaire, comment ca marche ?</title>
		<link>http://www.tsoin.com/asblog/2008/11/26/le-decalage-binaire-comment-ca-marche/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/26/le-decalage-binaire-comment-ca-marche/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 14:54:07 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[binaire]]></category>
		<category><![CDATA[calcul]]></category>
		<category><![CDATA[décalage]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=90</guid>
		<description><![CDATA[Il y a des petites astuces qu&#8217;on ne connait (peut-être) pas, et qui peuvent faire gagner en performance&#8230; Les décalages binaires font partis de ces astuces&#8230; Le principe étant de décaler les bits d&#8217;une valeur. Le premier argument (x) est &#8230; <a href="http://www.tsoin.com/asblog/2008/11/26/le-decalage-binaire-comment-ca-marche/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Il y a des petites astuces qu&#8217;on ne connait (peut-être) pas, et qui peuvent faire gagner en performance&#8230;<br />
Les décalages binaires font partis de ces astuces&#8230; Le principe étant de décaler les bits d&#8217;une valeur. </p>
<p>Le premier argument (x) est la valeur à décaler, le second argument (y) est le nombre de décalage a effectuer :</p>
<div class="codeAS"> x >> y</div>
<p>Décaler un bit à gauche correspond à multiplier par 2 : </p>
<div class="codeAS"> 5 << 1 = 10</div>
<p>Décaler un bit à droite correspond à diviser par 2 : </p>
<div class="codeAS"> 10 >> 1 = 5</div>
<p>Chaque décalage correspond à multiplier / diviser par 2, si augmente le nombre de décalage cela équivaut à :</p>
<p>Nombre de décalage : 1 => Multiplication / Division par : 2<br />
Nombre de décalage : 2 => Multiplication / Division par : 4<br />
Nombre de décalage : 3 => Multiplication / Division par : 8<br />
Nombre de décalage : 4 => Multiplication / Division par : 16<br />
Nombre de décalage : 5 => Multiplication / Division par : 32<br />
Nombre de décalage : &#8230; => Multiplication / Division par : &#8230;</p>
<p><strong>!!! Attention !!! Le résultat est toujours un entier !</strong></p>
<div class="codeAS"> 50 >> 2 = 12</div>
<p>Aller plus loin :<br />
<a href="http://www.commentcamarche.net/contents/base/binaire.php3" target="blank">Le décalage binaire &raquo;</a><br />
<a href="http://www.commentcamarche.net/contents/base/representation.php3" target="_blank">Représentation des nombres entiers et réels &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/26/le-decalage-binaire-comment-ca-marche/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Adobe Cocomo</title>
		<link>http://www.tsoin.com/asblog/2008/11/26/adobe-cocomo/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/26/adobe-cocomo/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 12:05:10 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[AdobeTV]]></category>
		<category><![CDATA[Cocomo]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=151</guid>
		<description><![CDATA[Présenté à MAX 2008 de San Fransisco, Adobe Cocomo est disponible en version beta sur le labs d&#8217;Adobe. Cocomo, c&#8217;est une plateforme de service, hébergé par Adobe (sur le serveur acrobat.com), ainsi que des composants Flex, permettant l&#8217;ajout d&#8217;outils collaboratifs &#8230; <a href="http://www.tsoin.com/asblog/2008/11/26/adobe-cocomo/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Présenté à MAX 2008 de San Fransisco, Adobe Cocomo est disponible en version beta sur le labs d&#8217;Adobe.<br />
Cocomo, c&#8217;est une plateforme de service, hébergé par Adobe (sur le serveur acrobat.com), ainsi que des composants Flex, permettant l&#8217;ajout d&#8217;outils collaboratifs aux applications Flex :<br />
- VoIP ( Voix sur réseau )<br />
- Webcam<br />
- Chat<br />
- &laquo;&nbsp;Tableau blanc&nbsp;&raquo; multi utilisateurs<br />
- Partage de fichiers en temps réel<br />
- Gestion des utilisateurs<br />
- &#8230;</p>
<p>Cocomo n&#8217;est utilisable que sur Flex 3 ( il n&#8217;est pas compatible Flex2 ou Flash), il faut aller sur <a href="https://cocomo.acrobat.com/" target="_blank">cocomo.acrobat.com</a> et vous identifier, pour télécharger le sdk (comprenant aussi le pdf Cocomo Developper Guide, ainsi que 15 exemples d&#8217;utilisation). C&#8217;est sur cette même adresse que vous accéderez à la gestion de votre compte Cocomo et de vos &laquo;&nbsp;Rooms&nbsp;&raquo;. </p>
<p>Pour installer Cocomo dans Flex Builder 3, créer un dossier <i>com.adobe.cocomo</i>, dans le dossier des plugins de Flex Builder 3. Copier l&#8217;ensemble du .zip SDK dans ce dossier.</p>
<p>Pour chaque projet nécessitant Cocomo, il faut ajouter le chemin vers le .swc, dans Project > Properties > Flex Build Path > Library Path cliquer sur <em>AddSWC</em> et sélectionner le &laquo;&nbsp;cocomo.swc&nbsp;&raquo; se trouvant dans le dossier <em>lib</em> (Sélectionner le sous dossier player9 / player10 suivant la version de votre application).</p>
<p>Il vous faut ensuite créer une room dans votre espace dédié sur le <a href="https://cocomo.acrobat.com/">Cocomo Developer Portal</a>, une room équivaut à un espace de réunion de virtuel, tous les messages, fichiers, vidéos&#8230; publiés dans cet espace seront visible par les autres utilisateurs :</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/cocomo_creation.jpg" class="cadre" /></center></p>
<p>Après avoir créer un nouveau projet (ne pas oublier d&#8217;y ajouter le chemin vers cocomo.swc), vous devez vous connecter à la plateforme Cocomo, il faut obligatoirement une instance de la classe <em>AdobeHSAuthenticator</em>, ainsi qu&#8217;une instance d&#8217;une des classe étendant l&#8217;interface <em>IConnectSession</em>, ie : ConnectSession, ConnectSessionContainer ou SessionContainerProxy.</p>
<p>Pour mon exemple, j&#8217;ai utilisé le composant ConnectSession, prenant en paramètre roomURL le chemin vers la room crée précédemment, ce chemin correspond à l&#8217;adresse de votre compte (&laquo;&nbsp;http://connectnow.acrobat.com/tsoin&nbsp;&raquo; en l&#8217;occurence), puis la nom de votre room : <em>roomURL = http://connectnow.acrobat.com/tsoin/Cocomo001</em>.</p>
<p>Le composant AdobeHSAuthenticator  permet plusieurs scénarios :<br />
- Authentification par AdobeID (paramètres <em>userName</em> &#038; <em>password</em>)<br />
- Connexion en invité (paramètre <em>userName</em>)<br />
- Authentification externe (paramètre <em>authenticationKey</em> )<br />
&#8230;</p>
<p>L&#8217;exemple suivant utilise le composant SimpleChat, permettant aux utilisateurs lançant l&#8217;application de se connecter sous le pseudo Guest XXX, et de pouvoir discuter entre eux :</p>
<div class="codeAS">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; xmlns:rtc=&quot;CocomoNameSpace&quot;<br />
&nbsp;&nbsp;&nbsp;xmlns:session=&quot;com.adobe.rtc.session.*&quot; xmlns:pods=&quot;com.adobe.rtc.pods.*&quot;<br />
&nbsp;&nbsp;&nbsp;xmlns:collaboration=&quot;com.adobe.rtc.collaboration.*&quot; creationComplete=&quot;cSession.login()&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;rtc:AdobeHSAuthenticator id=&quot;user&quot; userName=&quot;Guest&quot;/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;session:ConnectSession roomURL=&quot;AccountURL_Room/Vince&quot; id=&quot;cSession&quot; authenticator=&quot;{user}&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;mx:VBox width=&quot;100%&quot; height=&quot;100%&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGrid width=&quot;100%&quot; height=&quot;100%&quot; dataProvider=&quot;{cSession.userManager.userCollection}&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn dataField=&quot;displayName&quot; headerText=&quot;User&quot;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:DataGridColumn dataField=&quot;role&quot; headerText=&quot;Role&quot;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:columns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mx:DataGrid&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pods:SimpleChat width=&quot;100%&quot; height=&quot;100%&quot;/&gt;<br />
 &nbsp;&nbsp;&nbsp;&lt;/mx:VBox&gt;<br />
&lt;/mx:Application&gt;</div>
<p><center>[kml_flashembed movie="http://tsoin.com/asblog/tutoriel/Cocomo/001/Cocomo.swf" height="600" width="542" /]</center></p>
<p>Pour la beta, les restrictions sont les suivantes :<br />
- 25 utilisateurs simultané<br />
- 15 000 minutes de connexion utilisateur par mois<br />
- 250 000 messages publié pas mois<br />
- 3 Go de bande passante par mois</p>
<p>La version beta est en version gratuite, mais il n&#8217;y a pas encore de <a href="http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=72&#038;catid=759&#038;threadid=1406198&#038;enterthread=y" targt="_blank">coût d&#8217;utilisation pour la release</a>&#8230;</p>
<p><a href="http://labs.adobe.com/technologies/cocomo/" target="_blank">La page Cocomo sur le labs »</a><br />
<a href="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&#038;catid=759&#038;entercat=y" target="_blank"> Forum Cocomo &raquo;</a><br />
<a href="http://connectnow.acrobat.com/" target="_blank"> Exemple Cocomo : ConnectNow &raquo;</a><br />
<a href="http://blogs.adobe.com/collabmethods/" target="_blank">Blog Collaborative Methods &raquo;</a></p>
<p>Présentation et exemple de Cocomo par Ryan Stewart :<br />
<center><embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="640" height="385" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi90ZWNoX3RhbGtfd2l0aF9yeWFuX3N0ZXdhcnQvMTAyX3R0cl8wMDMuZmx2P3Jzc19mZWVkaWQ9MTU3OSZ4bWx2ZXJzPTI=&#038;w=640&#038;h=385"></embed></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/26/adobe-cocomo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apprendre Flex en 1 semaine</title>
		<link>http://www.tsoin.com/asblog/2008/11/24/apprendre-flex-en-1-semaine/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/24/apprendre-flex-en-1-semaine/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 10:40:32 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=149</guid>
		<description><![CDATA[Excellente liste de liens sur le Flex Developper Center, pour apprendre Flex en 1 semaine. Découper en 5 &#171;&#160;jours&#160;&#187;, vous apprendrez grâce à des vidéos, mettrez en pratique avec des exercices en PDF. Des bases aux fonctionnalités plus complexes (archtecture..) &#8230; <a href="http://www.tsoin.com/asblog/2008/11/24/apprendre-flex-en-1-semaine/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Excellente liste de liens sur le <a href="http://www.adobe.com/devnet/flex/" target="_blank">Flex Developper Center</a>, pour apprendre Flex en 1 semaine.<br />
Découper en 5 &laquo;&nbsp;jours&nbsp;&raquo;, vous apprendrez grâce à des vidéos, mettrez en pratique avec des exercices en PDF. Des bases aux fonctionnalités plus complexes (archtecture..) en passant par la création de composants, la customisation avecCS3, un petit lien à garder dans les bookmarks !</p>
<p><a href="http://www.adobe.com/devnet/flex/videotraining/" target="_blank">Flex in a Week raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/24/apprendre-flex-en-1-semaine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KeyboardEvent &amp; KeyCode</title>
		<link>http://www.tsoin.com/asblog/2008/11/24/keyboardevent-keycode/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/24/keyboardevent-keycode/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 10:14:30 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=148</guid>
		<description><![CDATA[Correspondance des touches du clavier et keycode : Keyboard Keys and Key Code Values &#187;]]></description>
			<content:encoded><![CDATA[<p>Correspondance des touches du clavier et keycode : </p>
<p><a href="http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&#038;file=00001136.html" target="_blank">Keyboard Keys and Key Code Values &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/24/keyboardevent-keycode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparatif Moteurs 3D, et les plus performants sont&#8230;</title>
		<link>http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 17:04:46 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Alternativa3D]]></category>
		<category><![CDATA[Away3D]]></category>
		<category><![CDATA[Comparatif]]></category>
		<category><![CDATA[moteur]]></category>
		<category><![CDATA[Papervision3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=142</guid>
		<description><![CDATA[Suite à mon comparatif de performance, makemepulse commentait que la dernière release de Papervision3D réglait le problème des fuites de mémoire. Ne pouvant rester sur une conclusion qui n&#8217;avait plus lieu d&#8217;être, j&#8217;ai donc refais mes tests avec la dernière &#8230; <a href="http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Suite à mon <a href="http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/" target="_blank">comparatif de performance</a>, makemepulse commentait que la dernière release de Papervision3D réglait le problème des fuites de mémoire. Ne pouvant rester sur une conclusion qui n&#8217;avait plus lieu d&#8217;être, j&#8217;ai donc refais mes tests avec la dernière version des moteurs ( excepté Sandy3D, n&#8217;ayant pas eu de nouvelle version depuis le début de l&#8217;année ).</p>
<p>Voici donc les versions testées :<br />
- Papervision3D : Public Beta 2.0 &#8211; Great White / 2008.09.09 (revision 804)<br />
- Away3D : 2.2.0 / 2008.09.27<br />
- Alternativa3D : 5.5.0 / 2008.10.25</p>
<p>Je ne reprendrais pas les 3 premiers points du comparatif précédent, les différence étant minimes, surement du à la machine plus qu&#8217;au améliorations ( les différences de temps de créations sont inférieures à 0.5ms ). LE point important étant la mémoire, et la formidable amélioration de Papervision, qui vient changer la donne&#8230;</p>
<p>Alternativa3D reste le moteur qui gère le mieux la mémoire, mais Papervision3D vient coiffer Away3D au poteau&#8230; Même si la différence reste peu importante, le retard rattrapé par Papervision3D est remarquable, vous pouvez retrouver les explications de la fuite moiré sur <a href="http://www.sebleedelisle.com/?p=309" target="_blank">ce post de Seb Lee-Delisle &raquo;</a><br />
Vous retrouvez dans les graphes ci-dessous l&#8217;évolution de l&#8217;usage mémoire par chacun des trois moteurs 3D :</p>
<p><u>Alternativa3D</u><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/alternativa.jpg" class="cadre" /></center></p>
<p><u>Away3D</u><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/away.jpg" class="cadre" /></center></p>
<p><u>Papervision3D</u><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/papervision.jpg" class="cadre" /></center></p>
<p>Les conclusions sont donc différentes, et pouvoir assigner une &laquo;&nbsp;vraie&nbsp;&raquo; première place, me semble impossible.<br />
- Away3D : temps de création et mémoire utilisé à la création <em>les plus bas</em>, mais mémoire globale <em>plus haute</em><br />
- Alternativa3D : temps de création au <em>plus haut</em>, et mémoire à la création dans la <em>moyenne</em>, mais mémoire globale la <em>plus basse</em><br />
- Papervision3D : temps de création, mémoire à la création, et mémoire globale dans la <em>moyenne</em>.</p>
<p>Autant il est était facile de prendre une décision avec l&#8217;ancien comparatif, autant avec celui-ci, les écarts sont infimes, les choix difficiles, je dirais match nul&#8230;<br />
Reste à voir graphiquement lequel est celui qui s&#8217;en sort le mieux&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comparatif Moteurs 3D,  et le plus performant est&#8230;</title>
		<link>http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 15:52:42 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Alternativa3D]]></category>
		<category><![CDATA[Away3D]]></category>
		<category><![CDATA[Comparatif]]></category>
		<category><![CDATA[Papervision3D]]></category>
		<category><![CDATA[Sandy3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=93</guid>
		<description><![CDATA[Suite aux derniers posts concernant les moteurs 3D ( Alterntiva3D, Away3D, Papervision3D &#38; Sandy3D), j&#8217;ai fait quelques tests afin de comparer les temps de création d&#8217;objet (Cube, Sphere, Cône et Plane) dans chacun des moteurs. !!! UPDATE !!! Attention, suite &#8230; <a href="http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Suite aux derniers posts concernant les moteurs 3D ( Alterntiva3D, Away3D, Papervision3D &amp; Sandy3D), j&#8217;ai fait quelques tests afin de comparer les temps de création d&#8217;objet (Cube, Sphere, Cône et Plane) dans chacun des moteurs. </p>
<div class="codeAS">
<strong>!!! UPDATE !!!</strong><br />
Attention, suite aux dernières mises à jour du framework de Papervision3D, les problèmes de mémoire évoquer ci-dessous n&#8217;ont plus lieu d&#8217;être.<br />
Comparatif à jour &#038; complémentaire <a href="http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/">ici &raquo;</a>
</div>
<p><u><strong>Mise à disposition des sources :</strong></u><br />
- <a href="http://www.tsoin.com/asblog/tutoriel/Alternativa3D.zip">Alternativa3D &raquo;</a> (le framework n&#8217;est pas inclus, n&#8217;étant pas en open-source)<br />
- <a href="http://www.tsoin.com/asblog/tutoriel/Away3D.zip">Away3D &raquo;</a><br />
- <a href="http://www.tsoin.com/asblog/tutoriel/PV3D.zip">Papervision3D &raquo;</a><br />
- <a href="http://www.tsoin.com/asblog/tutoriel/Sandy3D.zip">Sandy3D &raquo;</a></p>
<p>Ma méthode fut la suivante :<br />
- Implémentation au plus simple et identique pour chacun des moteurs.<br />
- Mécanique identique de création des objets, instance unique.<br />
- Une seule instance des materials ( filaire et texture )<br />
- Utilisation de calcul asynchrone afin de ne pas avoir de valeurs faussés ( la création de l&#8217;objet est faite quand le processeur le permet )<br />
- Test à la création de 1000 objets, avec différentes variables ( filaire ou bitmap, lissage de l&#8217;image ou non)<br />
- Stockage des données dans un tableau, les résultats utilisés sont les moyennes de temps de création et de mémoire utilisés par objet.<br />
- Vérification de la mémoire initiale, du pique de mémoire, ainsi que de la mémoire utilisé après les tests.</p>
<p>Version :<br />
- Papervision3D : Public Beta 2.0 &#8211; Great White / 2008.09.09 (revision 731)<br />
- Away3D : 2.1.0 / 2008.05.23<br />
- Sandy3D : 3.0.2 / 2008.02.25<br />
- Alternativa3D : 5.3.0 / 2008.08.12</p>
<p>Comme vous pourrez le remarquer les résultats sont très disparates suivant les moteurs, et même si les objets n&#8217;ont pas les mêmes caractéristiques (le nombre de segments d&#8217;un cube ne peut pas être augmenté dans Away3D &amp; Sandy3D, contrairement à Alternativa3D &amp; Papervision3D), les différences parlent d&#8217;elles mêmes&#8230; Vous le verrez dans les 4 points suivants :</p>
<p><strong>1. Poids SWF</strong><br />
L&#8217;exportation du fichier swf et le poids de celui ci (non négligeable au moment de l&#8217;accès au site, notamment pour les petites connexions) montre les premières différences entre les moteurs.<br />
Le premier cas importe les package de camera, vue et scene.<br />
Le second cas importe en plus les pacakge de Cube, Plane, Cone et Sphere.</p>
<table border="0">
<tbody>
<tr>
<td></td>
<td><em><center>Cas 1 : Implémentation du moteur</center></em></td>
<td>-</td>
<td><em><center>Cas 2 : Implémentation primitives</center></em></td>
</tr>
<tr>
<td><em>1. Sandy3D</em></td>
<td><em><center>60ko</center</em></td>
<td>-</td>
<td><em><center>87ko</center</em></td>
</tr>
<tr>
<td><em>2. Alternativa3D</em></td>
<td><em><center>70ko</center</em></td>
<td>-</td>
<td><em><center>94ko</center</em></td>
</tr>
<tr>
<td><em>3. Papervision3D</em></td>
<td><em><center>83ko</center</em></td>
<td>-</td>
<td><em><center>95ko</center</em></td>
</tr>
<tr>
<td><em>4. Away3D</em></td>
<td><em><center>105ko</center</em></td>
<td>-</td>
<td><em><center>132ko</center</em></td>
</tr>
</tbody>
</table>
<p><strong>2. Mémoire à l&#8217;initialisation du moteur:</strong><br />
Voyons maintenant l&#8217;espace mémoire pris lors de l&#8217;implémentation du moteur 3D. On test la mémoire sans lancer aucune création d&#8217;objet, et les moteurs montrent déjà que certains sont plus optimisés et d&#8217;autres, beaucoup, beaucoup moins :</p>
<p><em>1. Papervision3D &#8211; 167 ko<br />
2. Away3D &#8211; 199 ko<br />
3. Alternativa3D &#8211; 202 ko<br />
4. Sandy3D &#8211; 1 136 ko</em></p>
<p>Sandy3D part donc déjà avec un gros handicap, on verra par la suite que ce n&#8217;est pas le seul&#8230;</p>
<p><strong>3. Mémoire Globale:</strong><br />
L&#8217;écart se creuse encore, Papervision3D et Sandy3D ont une très mauvaise gestion de la mémoire, en effet malgré la suppression de l&#8217;objet sur la scène et de son instance, il est toujours en mémoire. L&#8217;application monte donc en mémoire, sans jamais redescendre, ce qui peut s&#8217;avérer extrêmement dangereux&#8230; Il est à noté que Away3D &amp; Alternativa3D gèrent par contre très bien la mémoire, et suppriment les éléments comme il faut. Après la création  de plusieurs milliers d&#8217;instance de plusieurs objets, on se retrouve avec une mémoire :</p>
<p><em>1. Away3D &#8211; 700 ko<br />
2. Alternativa3D &#8211; 876 ko<br />
3. Papervision3D &#8211; 50 784 ko<br />
4. Sandy3D &#8211; 175 552 ko</em></p>
<p>Les graphes ci-dessous montre bien la gestion de la mémoire par les 4 moteurs 3D, on remarque sur Alternativa3D &amp; Away3D, la mémoire qui évolue suivant les suppressions d&#8217;éléments et le lancement du Garbage Collector, alors que pour Papervision3D &amp; Sandy3D, ca monte, ca monte, ca monte&#8230;.</p>
<p><span style="text-decoration: underline;">Alternativa3D</span><br />
<center><img class="cadre" title="Alternativa3D" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/alternativa3d.jpg" alt="Alternativa3D" /></center></p>
<p><span style="text-decoration: underline;">Away3D</span><br />
<center><img class="cadre" title="Away3D" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/away3d.jpg" alt="Away3D" /></center></p>
<p><span style="text-decoration: underline;">Papervision3D</span><br />
<center><img class="cadre" title="Papervision3D" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/papervision3d.jpg" alt="Papervision3D" /></center></p>
<p><span style="text-decoration: underline;">Sandy3D</span><br />
<center><img class="cadre" title="Sandy3D" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/sandy3d.jpg" alt="Sandy3D" /></center></p>
<p><strong>4. Création d&#8217;objet :</strong><br />
Question de logique, plus l&#8217;objet à créer est compliqué, plus il faudra de temps pour le créer, et plus la mémoire utilisé par cet objet sera importante&#8230; Comparer les temps de création et d&#8217;espace mémoire entre chacun des moteurs objets est assez compliquer. En effet, malgré des valeurs identiques, les moteurs créer des objets plus ou moins complexes, je ne comparerais donc pas la forme de ces objets, le nombre de triangle étant assez identiques, l&#8217;appréciation de la qualité de l&#8217;objet est spécifique à chaque utilisateur&#8230;</p>
<p><center><br />
</center></p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" bgcolor="#FFFFFF">
<div align="center"><span style="text-decoration: underline;">Création d&#8217;un objet filaire</span></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">
<div align="center"></div>
</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Away3D</strong></td>
<td bgcolor="#FFFFFF">0.814ms &#8211; 23ko</td>
<td bgcolor="#FFFFFF">0.321ms &#8211; 9ko </td>
<td bgcolor="#FFFFFF">1.265ms &#8211; 37ko</td>
<td bgcolor="#FFFFFF">4.884ms &#8211; 138ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Alternativa3D</strong></td>
<td bgcolor="#FFFFFF">5.865ms &#8211; 95ko</td>
<td bgcolor="#FFFFFF">1.913ms &#8211; 20ko</td>
<td bgcolor="#FFFFFF">5.723ms &#8211; 102ko</td>
<td bgcolor="#FFFFFF">9.434ms &#8211; 179ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Papervision3D</strong></td>
<td bgcolor="#FFFFFF">4.961ms &#8211; 126ko</td>
<td bgcolor="#FFFFFF">0.872ms &#8211; 23ko</td>
<td bgcolor="#FFFFFF">2.996ms &#8211; 76ko</td>
<td bgcolor="#FFFFFF">4.126ms &#8211; 84ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Sandy3D</strong></td>
<td bgcolor="#FFFFFF">1.645ms &#8211; 16ko</td>
<td bgcolor="#FFFFFF">0.267ms &#8211; 12ko</td>
<td bgcolor="#FFFFFF">10.848ms &#8211; 222ko</td>
<td bgcolor="#FFFFFF">15.299ms &#8211; 314ko</td>
</tr>
</table>
<p></p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" bgcolor="#FFFFFF">
<div align="center"><span style="text-decoration: underline;">Création d&#8217;un objet avec bitmap non lissé</span></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Away3D</strong></td>
<td bgcolor="#FFFFFF">1.292ms &#8211; 35ko</td>
<td bgcolor="#FFFFFF">0.817ms &#8211; 23ko</td>
<td bgcolor="#FFFFFF">1.67ms &#8211; 49ko</td>
<td bgcolor="#FFFFFF">5.159ms &#8211; 153ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Alternativa3D</strong></td>
<td bgcolor="#FFFFFF">5.909ms &#8211; 96ko</td>
<td bgcolor="#FFFFFF">1.966ms &#8211; 21ko</td>
<td bgcolor="#FFFFFF">5.733ms &#8211; 102ko</td>
<td bgcolor="#FFFFFF">9.478ms &#8211; 178ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Papervision3D</strong></td>
<td bgcolor="#FFFFFF">6.486ms &#8211; 169ko</td>
<td bgcolor="#FFFFFF">1.801ms &#8211; 70ko</td>
<td bgcolor="#FFFFFF"> 3.607ms &#8211; 121ko</td>
<td bgcolor="#FFFFFF">5.31ms &#8211; 130ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Sandy3D</strong></td>
<td bgcolor="#FFFFFF">1.856ms &#8211; 18ko</td>
<td bgcolor="#FFFFFF">0.254ms &#8211; 12ko</td>
<td bgcolor="#FFFFFF">11.389ms &#8211; 229ko</td>
<td bgcolor="#FFFFFF">16.295ms &#8211; 330ko</td>
</tr>
</table>
<p></p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" bgcolor="#FFFFFF">
<div align="center"><span style="text-decoration: underline;">Création d&#8217;un objet avec bitmap lissé</span></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Away3D</strong></td>
<td bgcolor="#FFFFFF">1.319ms &#8211; 35ko</td>
<td bgcolor="#FFFFFF">0.843ms &#8211; 23ko</td>
<td bgcolor="#FFFFFF">1.722ms &#8211; 51ko</td>
<td bgcolor="#FFFFFF">5.195ms &#8211; 152ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Alternativa3D</strong></td>
<td bgcolor="#FFFFFF">5.811ms &#8211; 97ko</td>
<td bgcolor="#FFFFFF">1.954ms &#8211; 21ko</td>
<td bgcolor="#FFFFFF">5.764ms &#8211; 102ko</td>
<td bgcolor="#FFFFFF">9.475ms &#8211; 182ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Papervision3D</strong></td>
<td bgcolor="#FFFFFF">6.391ms &#8211; 169ko</td>
<td bgcolor="#FFFFFF">1.837ms &#8211; 70ko</td>
<td bgcolor="#FFFFFF"> 3.556ms &#8211; 121ko</td>
<td bgcolor="#FFFFFF">5.259ms &#8211; 128ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Sandy3D</strong></td>
<td bgcolor="#FFFFFF">1.747ms &#8211; 18ko</td>
<td bgcolor="#FFFFFF">0.221ms &#8211; 12ko</td>
<td bgcolor="#FFFFFF">11.16ms &#8211; 228ko</td>
<td bgcolor="#FFFFFF">15.657ms &#8211; 330ko</td>
</tr>
</table>
<p><u>4.1 Temps</u><br />
De manière globale, Away3D est le plus rapide.<br />
Sandy3D a des performances équivalente voire meilleure pour la création de Box ou de Plane, mais est très très loin d&#8217;être aussi performant dans la création de Cône ou de Sphère, une fois de plus celui ci se démarque par sa singularité.<br />
Quelque soit le type de texture utilisé, Alternativa3D a des temps de création quasi similaires, il est donc moins performant lors de création d&#8217;objet filaire, mais cet handicap se réduit donc lors de la création d&#8217;objet &laquo;&nbsp;texturé&nbsp;&raquo;.<br />
Les temps de création d&#8217;objet par Papervision3D se situe dans la moyenne de celle d&#8217;Away3D et Alternativa3D, excepté pour les Box, ceci étant du aux nombres de segments crées par Papervision3D.</p>
<p>1. Away3D<br />
2. Papervision3D<br />
3. Alternativa3D<br />
4. Sandy3D</p>
<p><u>4.1 Mémoire</u><br />
Comme pour les temps de création, Away3D est le moins gourmand en général :<br />
- Sandy3D consomme moins de ressources lors de la création de Box ou de Plane, mais explose littéralement lors de la création de Cône et de Sphère<br />
- Papervision3D, consomme beaucoup moins de ressource lors de la création de Sphère, mais utilise presque 6 fois plus de mémoire qu&#8217;Away3D lors de la création de Box ( notamment du, comme pour le temps de création, au nombre de segments crées par Papervision3D )</p>
<p>Alternativa3D est quant à lui dans la moyenne haute des autres moteurs, sans pour autant être catastrophique.</p>
<p>1. Away3D<br />
2. Papervision3D / Alternativa3D<br />
4. Sandy3D</p>
<p>Différence de temps de création entre un objet filaire et un objet texturé :</p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tbody>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Away3D</td>
<td bgcolor="#FFFFFF"> +/- 0.5ms</td>
<td bgcolor="#FFFFFF"> +/- 0.5ms</td>
<td bgcolor="#FFFFFF"> +/- 0.5ms</td>
<td bgcolor="#FFFFFF"> +/- 0.3ms</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Alternativa3D</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Papervision3D</td>
<td bgcolor="#FFFFFF"> +/- 1.5ms</td>
<td bgcolor="#FFFFFF"> +/- 1.0ms</td>
<td bgcolor="#FFFFFF"> +/- 0.7ms</td>
<td bgcolor="#FFFFFF"> +/- 1.2ms</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Sandy3D</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.5ms</td>
<td bgcolor="#FFFFFF">+/- 1.5ms</td>
</tr>
</tbody>
</table>
<p>Ces écarts de temps de création sont à corrélés avec la mémoire utilisés par la création de cet objet :</p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tbody>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Away3D</td>
<td bgcolor="#FFFFFF"> +/- 12ko</td>
<td bgcolor="#FFFFFF"> +/- 14ko</td>
<td bgcolor="#FFFFFF"> +/- 13ko</td>
<td bgcolor="#FFFFFF"> +/- 14ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Alternativa3D</td>
<td bgcolor="#FFFFFF"> +/- 1ko</td>
<td bgcolor="#FFFFFF"> +/- 1ko</td>
<td bgcolor="#FFFFFF"> +/- 1ko</td>
<td bgcolor="#FFFFFF"> +/- 3ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Papervision3D</td>
<td bgcolor="#FFFFFF"> +/- 43ko</td>
<td bgcolor="#FFFFFF"> +/- 47ko</td>
<td bgcolor="#FFFFFF"> +/- 45ko</td>
<td bgcolor="#FFFFFF"> +/- 46ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Sandy3D</td>
<td bgcolor="#FFFFFF"> +/- 2ko</td>
<td bgcolor="#FFFFFF"> +/- 2ko</td>
<td bgcolor="#FFFFFF"> +/- 6ko</td>
<td bgcolor="#FFFFFF"> +/- 15ko</td>
</tr>
</tbody>
</table>
<p>On peut remarquer que ces écarts sont quasi idem pour chacun des objets crée par chaque moteurs 3D, Alternativa3D ayant un delta proche de zéro, on peut conclure que la gestion de texture filaire ou bitmap se fait de la même façon. On remarque aussi les différences de delta pour Sandy3D entre les objets Box/Plane et Cône/Sphère.</p>
<p><strong>5. Conclusion</strong><br />
Les tests effectués ne sont peut être pas représentatifs de la création d&#8217;une application, ou d&#8217;un site internet, mais ils nous montrent comment réagissent ces moteurs 3D dans des cas extrêmes, et si certains cas semblent dangereux (notamment la gestion de la mémoire), il faut garder en mémoire que tout le monde n&#8217;a pas de machine surpuissante, et qu&#8217;il faut toujours penser à qui est destiné le développement que l&#8217;ont fait (et pas se dire, si ca marche sur ma machine, y&#8217;a pas de raison que ca marche pas ailleurs, comme je l&#8217;entend assez souvent&#8230;).</p>
<p>De plus, ce comparatif ne prend pas en compte les différentes possibilités offertes par certains moteurs 3D (réélections&#8230;), il faut donc choisir judicieusement  le moteur en fonction de ces possibilités ainsi que de ces performances.</p>
<p>Concernant les performances, venons en donc aux conclusions.</p>
<p>4.  &#8211; Sandy3D et la mémoire, ce n&#8217;est pas un histoire d&#8217;amour, et ce, dès l&#8217;initialisation du moteur, et même si les performances lors de la création de Box et de Plane sont parmi les meilleures, la gestion de la mémoire (pas de suppressions des instances), les performances &laquo;&nbsp;catastrophiques&nbsp;&raquo; pour la création de Cône et de Sphère (donc d&#8217;éléments complexes), montrent les lacunes de Sandy3D. Au vue des résultats, c&#8217;est le seul moteur qui ne réagit pas de façon homogène, si vous l&#8217;utiliser il faut rester dans des formes simples, et peu nombreuses&#8230;</p>
<p>2. ex aequo  &#8211; Les temps de création de Papervision3D se situe dans la moyenne, c&#8217;est au niveau de la mémoire que ça se gâte, malgré une bonne gestion lors de la création de Sphère, il est bien plus gourmand lors de la création de Box et de Plane. Nous avons pu voir que Papervision3D ne supprime pas ces instances et rencontre donc le même problème que Sandy3D, sans pour autant cumuler au même sommet mais c&#8217;est à surveiller lors de création et suppression de nombreux éléments&#8230;</p>
<p>2. ex aequo  &#8211; Alternativa3D, dernier venu dans le monde des moteurs 3D, gère extrêmement bien (ou plutôt normalement !?) la mémoire, il est cependant plus gourmand en temps de création (entre 2 et 5 fois plus) que les autres moteurs. Malgré son coup de licence qui peut freiner, ces performances en font un des meilleurs moteurs 3D actuels.</p>
<p>1. Et pour finir, Away3D. Temps de création les plus bas du comparatifs, mémoire nécessaire à la création les plus bas aussi, excepté sur quelques points (Box et Sphère), mais qui reste excellents, et gestion de la mémoire globale excellente aussi. Bref le moteur 3D que je conseillerai (en terme de performance, encore une fois, et pas de possibilité de rendu graphique ).</p>
<p><em>Merci à Philippe, dit &laquo;&nbsp;Papa&nbsp;&raquo;, pour sa relecture !</em></p>
<p><em>NB:<br />
- Comparatif réalisé avec le Flash Player 10<br />
- J&#8217;ai utilisé le terme Box de façon générale, la classe exacte pour Away3D et Papervision est Cube, il en est de même pour Plane3D dans Sandy3D</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>3 Méthodes pour réduire le poids d&#8217;une application Flex</title>
		<link>http://www.tsoin.com/asblog/2008/11/17/3-methodes-pour-reduire-le-poids-dune-application-flex/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/17/3-methodes-pour-reduire-le-poids-dune-application-flex/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 13:19:33 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Optimisation]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=131</guid>
		<description><![CDATA[Serge Jespers nous présente sur Adobe TV, 3 méthodes pour réduire le poids d&#8217;une application Flex. Pour résumer : - Exportation de l&#8217;application en Release - Utilisation de MXML Module (création de swf externe) - Framework Flex externe (Librairy Path &#8230; <a href="http://www.tsoin.com/asblog/2008/11/17/3-methodes-pour-reduire-le-poids-dune-application-flex/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.webkitchen.be/2008/11/16/3-ways-to-make-your-flex-application-smaller/" target="_blank">Serge Jespers</a> nous présente sur <a href="http://tv.adobe.com/#vi+f1472v1010" target="_blank">Adobe TV</a>, 3 méthodes pour réduire le poids d&#8217;une application Flex.<br />
Pour résumer :<br />
- Exportation de l&#8217;application en Release<br />
- Utilisation de MXML Module (création de swf externe)<br />
- Framework Flex externe (Librairy Path > Framework linkage > Runtime shared library &#8211; RSL)</p>
<p>L&#8217;explication complète en vidéo :<br />
<center><embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="640" height="385" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi9hZGNfcHJlc2VudHMvNjRfYWRjXzA0NC5mbHY/cnNzX2ZlZWRpZD0xNDcyJnhtbHZlcnM9Mg==&#038;w=640&#038;h=385"></embed></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/17/3-methodes-pour-reduire-le-poids-dune-application-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash10, FileReference &amp; Error #2176</title>
		<link>http://www.tsoin.com/asblog/2008/11/17/flash10-filereference-error-2176/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/17/flash10-filereference-error-2176/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 11:46:09 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[2176]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[FileReference]]></category>
		<category><![CDATA[Flash10]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=130</guid>
		<description><![CDATA[Parmi les nouveautés de Flash10, les restrictions de sécurité du FileReference font parties des mauvaises nouvelles. Bien que sur le papier l&#8217;enjeu sécuritaire est important, le fait qu&#8217;il n&#8217;y ai pas de rétro compatibilité pose pas mal de problème et &#8230; <a href="http://www.tsoin.com/asblog/2008/11/17/flash10-filereference-error-2176/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Parmi les nouveautés de Flash10, les restrictions de sécurité du FileReference font parties des mauvaises nouvelles. Bien que sur le papier l&#8217;enjeu sécuritaire est important, le fait qu&#8217;il n&#8217;y ai pas de rétro compatibilité pose pas mal de problème et la blogosphère de développeurs Flash/Flex le montre bien :<br />
<a href="http://jessewarden.com/2008/10/flash-player-10-surprise-error-2176.html" target="_blank">Flex and Flash Developer &#8211; Jesse Warden dot Kizz-ohm</a><br />
<a href="http://theflashblog.com/?p=423" target="_blank">The Flash Blog</a></p>
<p>En effet, dans le Flash Player 10, l&#8217;appel à Filereference.browse ou FileReference.download n&#8217;est accepter que lorsque qu&#8217;il y a une action utilisateur (MouseEvent, KeyboardEvent&#8230;), si cela pose quelques problèmes pour les nouveaux projets à venir (utilisation d&#8217;un framework utilisant les notifications, donc appel indirect&#8230;), cela en pose encore plus pour les anciens projets, qui pourront ne plus fonctionner suivant la méthode de développement utilisés.</p>
<p>Je me suis confronté au problème sur un projet Flex / PureMVC, suite à un clic utilisateur, j&#8217;appelle à un webservice qui me renvoi l&#8217;adresse d&#8217;un fichier à télécharger, je lance alors un FileReference.download(), mais Flash10 ayant &laquo;&nbsp;perdu&nbsp;&raquo; l&#8217;action de l&#8217;utilisateur dans les notifcations de PureMVC, il fait une alerte :</p>
<div class="codeAS">Error: Error #2176: Certaines actions, par exemple celles qui ouvrent une fenêtre contextuelle, ne peuvent être invoquées que par une interaction de l&#8217;utilisateur, telle qu&#8217;un clic de souris ou un appui sur une touche.)</div>
<p>Pour l&#8217;utilisateur ayant Flash10, rien ne se passe, et malgré de nombreuses tentatives ( ce que ferait n&#8217;importe quel utilisateur dans ce cas) l&#8217;utilisateur ne pourra jamais effectuer l&#8217;action voulu. Donc tous vos développement antérieurs faisant appel à une méthode de FileReference indirectement ne fonctionera plus sur Flash10, il vous faudra reprendre vos anciens projets, se replonger dans le code, et résoudre ce problème !</p>
<p>La solution étant la suivante :</p>
<div class="codeAS">var _file:FileReference = new FileReference();<br />
try {<br />
&nbsp;&nbsp;&nbsp;// Flash Player 9<br />
&nbsp;&nbsp;&nbsp;_file.download(new URLRequest(url));<br />
} catch(erreur:Error) {<br />
&nbsp;&nbsp;&nbsp;// Flash Player 10<br />
&nbsp;&nbsp;&nbsp;popupFlash10(url);<br />
}</div>
<p>On test si l&#8217;appel à la méthode download de FileReference fonctionne (Flash 9), si ce n&#8217;est pas le cas (Flash 10), on ouvre une popup proposant le lien à l&#8217;utilisateur, qui valide en cliquant sur un bouton.<br />
Flash 10 détectant l&#8217;appel à la méthode download de FileReference par une action utilisateur, le téléchargement fonctionnera&#8230;</p>
<p><a href="http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes_print.html#head3" target="_blank">Upload et Download requert un action utilisateur ( Adobe Flash 10 security changes ) &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/17/flash10-filereference-error-2176/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Flash Player Bug System</title>
		<link>http://www.tsoin.com/asblog/2008/11/03/adobe-flash-player-bug-system/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/03/adobe-flash-player-bug-system/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 17:11:22 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[FlashPlayer]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[bug]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=121</guid>
		<description><![CDATA[Il y a ces sites qu&#8217;on ne connait pas, mais qui pourtant nous éviterait pas mal de temps perdu à chercher sur les forums et autres blogs&#8230; Voici donc le site de référencement &#187; des (nombreux) bugs du Flash Player, &#8230; <a href="http://www.tsoin.com/asblog/2008/11/03/adobe-flash-player-bug-system/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Il y a ces sites qu&#8217;on ne connait pas, mais qui pourtant nous éviterait pas mal de temps perdu à chercher sur les forums et autres blogs&#8230;<br />
Voici donc le <a href="https://bugs.adobe.com/jira/secure/IssueNavigator.jspa" target="_blank">site de référencement &raquo;</a> des (nombreux) bugs du Flash Player, ainsi que des demandes pour les versions suivantes. Ce site concerne aussi Flex, Cairngorn&#8230;</p>
<p>Vers <a href="https://bugs.adobe.com/jira/secure/IssueNavigator.jspa" target="_blank">Adobe Bug System &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/03/adobe-flash-player-bug-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SampleDataEvent, fréquence et graphe</title>
		<link>http://www.tsoin.com/asblog/2008/11/03/sampledataevent-frequence-et-graphe/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/03/sampledataevent-frequence-et-graphe/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 16:50:38 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Musique]]></category>
		<category><![CDATA[Flash CS4]]></category>
		<category><![CDATA[Flash10]]></category>
		<category><![CDATA[SampleDataEvent]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=120</guid>
		<description><![CDATA[Dans mon précédent post, nous avons vu comment créer des sons en AS3, avec la classe SampleDataEvent, j&#8217;ai compléter le code afin de visualiser la courbe du son émis. j&#8217;ai volontairement baissé le nombre de samples ( de 8192 à &#8230; <a href="http://www.tsoin.com/asblog/2008/11/03/sampledataevent-frequence-et-graphe/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dans mon précédent post, nous avons vu comment créer des sons en AS3, avec la classe SampleDataEvent, j&#8217;ai compléter le code afin de visualiser la courbe du son émis. j&#8217;ai volontairement baissé le nombre de samples ( de 8192 à 2048 ) afin d&#8217;avoir une courbe plus &laquo;&nbsp;visible&nbsp;&raquo;, moins compacte&#8230;</p>
<p><center>[kml_flashembed movie="http://tsoin.com/asblog/tutoriel/SampleDataEvent/002/SoundSampleDataEvent.swf" height="260" width="542" /]</center></p>
<p>Les sources sont téléchargeables <a href="http://tsoin.com/asblog/tutoriel/SampleDataEvent/002/SoundSampleDataEvent.rar">ici &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/03/sampledataevent-frequence-et-graphe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Création de son en AS3 : SampleDataEvent</title>
		<link>http://www.tsoin.com/asblog/2008/10/30/creation-de-son-en-as3-sampledataevent/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/30/creation-de-son-en-as3-sampledataevent/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 15:07:17 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Musique]]></category>
		<category><![CDATA[Flash10]]></category>
		<category><![CDATA[SampleDataEvent]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=119</guid>
		<description><![CDATA[Avec l&#8217;arrivée de la nouvelle classe SampleDataEvent (Flash 10 ), il est maintenant possible de générer du son en AS3, sans avoir besoin d&#8217;aucun fichier. J&#8217;ai donc fait une petite expérimentation, avec un clavier de piano, et comme la doc &#8230; <a href="http://www.tsoin.com/asblog/2008/10/30/creation-de-son-en-as3-sampledataevent/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Avec l&#8217;arrivée de la nouvelle classe SampleDataEvent (Flash 10 ), il est maintenant possible de générer du son en AS3, sans avoir besoin d&#8217;aucun fichier. J&#8217;ai donc fait une petite expérimentation, avec un clavier de piano, et comme la doc n&#8217;est pas très explicite, j&#8217;ai un peu galérer, mais le résultat fonctionne&#8230;<br />
Je me suis basé sur les fréquences des notes trouvées sur le site <a href="http://www.ordiecole.com/logo/hertz.html" target="_blank">ordiecole.com &raquo;</a>, le LA étant le même que la tonalité du téléphone, je suis parti sur ces fréquences, qui me semblent bonnes, à mon oreille en tout cas ! Le tout pour un poids total de 3ko&#8230;</p>
<p><center>[kml_flashembed movie="http://tsoin.com/asblog/tutoriel/SampleDataEvent/001/SoundSampleDataEvent.swf" height="190" width="542" /]</center><br />
<span id="more-119"></span><br />
Les sources sont téléchargeables <a href="http://tsoin.com/asblog/tutoriel/SampleDataEvent/001/SoundSampleDataEvent.rar">ici &raquo;</a></p>
<div class="codeAS">package {<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp; *<br />
&nbsp;&nbsp;&nbsp; * &nbsp;&nbsp;&nbsp;Auteur: Vincent Helwig<br />
&nbsp;&nbsp;&nbsp; * &nbsp;&nbsp;&nbsp;Date: 30.10.2008<br />
&nbsp;&nbsp;&nbsp; * &nbsp;&nbsp;&nbsp;Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp; * &nbsp;&nbsp;&nbsp;Description: Clavier de Piano / SampleDataEvent<br />
&nbsp;&nbsp;&nbsp; *<br />
&nbsp;&nbsp;&nbsp; **/<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;import flash.display.MovieClip;<br />
&nbsp;&nbsp;&nbsp;import flash.media.Sound;<br />
&nbsp;&nbsp;&nbsp;import flash.events.MouseEvent;<br />
&nbsp;&nbsp;&nbsp;import flash.events.SampleDataEvent;<br />
&nbsp;&nbsp;&nbsp;import flash.media.SoundChannel;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(width = "542", height = "190", backgroundColor = "#dfdede", framerate = "30")]</p>
<p>&nbsp;&nbsp;&nbsp;public class SoundSampleDataEvent extends MovieClip {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _son:Sound<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var phase:Number = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var freq:Number = 440;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private const PI2:Number = Math.PI * 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var soundChannelObject:SoundChannel = new SoundChannel();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _clavier:Clavier;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function SoundSampleDataEvent() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_son = new Sound();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier = new Clavier(Clavier.OCTAVE3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier.x = 5;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier.y = 5;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier.addEventListener( MouseEvent.MOUSE_DOWN, onNoteDown );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier.addEventListener( MouseEvent.CLICK, onNoteUp );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(_clavier);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier = new Clavier(Clavier.OCTAVE4);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier.x = 271;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier.y = 5;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier.addEventListener( MouseEvent.MOUSE_DOWN, onNoteDown );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_clavier.addEventListener( MouseEvent.CLICK, onNoteUp );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(_clavier);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function onNoteDown(e:MouseEvent):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freq = e.target.frequence;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_son.addEventListener( SampleDataEvent.SAMPLE_DATA, onSample);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soundChannelObject = _son.play();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function onNoteUp(e:MouseEvent):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _son.removeEventListener( SampleDataEvent.SAMPLE_DATA, onSample);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soundChannelObject.stop();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function onSample(e:SampleDataEvent):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var smpl:Number;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var w:Number = PI2 * freq / 44000;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var i:int = 0; i < 8192; ++i) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phase += w;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (phase > PI2) { phase -= PI2; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smpl = Math.sin(phase);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.data.writeFloat(smpl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.data.writeFloat(smpl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/30/creation-de-son-en-as3-sampledataevent/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Utiliser Flex Profiling pour les projets Flash</title>
		<link>http://www.tsoin.com/asblog/2008/10/29/utiliser-flex-profiling-pour-les-projets-flash/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/29/utiliser-flex-profiling-pour-les-projets-flash/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 13:35:01 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[FlashDevelop]]></category>
		<category><![CDATA[Profiler]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=111</guid>
		<description><![CDATA[Sortant d&#8217;un long projet Flex3, je me suis habitué à utiliser le profiler de Flex pour tester mon application. De retour sous Flash, je cherchais à retrouver le même confort, et pouvoir utiliser le profiler avec mes projets développés sous &#8230; <a href="http://www.tsoin.com/asblog/2008/10/29/utiliser-flex-profiling-pour-les-projets-flash/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Sortant d&#8217;un long projet Flex3, je me suis habitué à utiliser le profiler de Flex pour tester mon application. De retour sous Flash, je cherchais à retrouver le même confort, et pouvoir utiliser le profiler avec mes projets développés sous FlashCS3, bientôt CS4, ou encore FlashDevelop&#8230;.<br />
Et c&#8217;est possible !</p>
<p>Il faut tout d&#8217;abord permettre le debbugage du swf compilé, pour celà, il faut :<br />
- Sous Flash CS3 /CS4, dans les paramètres de publication, cocher l&#8217;option &laquo;&nbsp;Autoriser le débogage&nbsp;&raquo; / &laquo;&nbsp;Permit debugging&nbsp;&raquo;<br />
- Sous FlashDevelop, il faut configurer son projet en &laquo;&nbsp;Debug&nbsp;&raquo; (menu déroulant, dans la liste d&#8217;icônes)</p>
<p>Une fois le swf compilé, il faut activer la vue Flex Profiling ( Window > Perspective > Flex Profiling )</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/10/flex.jpg" alt="" title="flex" width="500" height="375" class="cadre" /></center></p>
<p>Dans l&#8217;onglet &laquo;&nbsp;Profile&nbsp;&raquo;, cliquer sur la flèche descendante à droite, et sélectionner &laquo;&nbsp;Profile External Application&nbsp;&raquo; </p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/10/flexeternal.jpg" alt="" title="flexeternal" width="500" height="152" class="cadre" /></center></p>
<p>Cliquer sur &laquo;&nbsp;New&nbsp;&raquo;, et entrer le chemin vers votre application, une fois valider, sélectionner l&#8217;adresse dans la liste des applications, et cliquer sur Launch.</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/10/profilflex.jpg" alt="" title="profilflex" width="500" height="500" class="cadre" /></center></p>
<p><strong>!!! Attention Flash Player Debug Obligatoire !!!</strong></p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/10/configure1.jpg" alt="" title="configure1" width="400" height="500" class="cadre" /></center></p>
<p>Flex lancera alors votre application, et vous proposera de configurer le profiler, une fois valider (&laquo;&nbsp;Resume&nbsp;&raquo;), vous aurez accès aux données du Profiler sur votre application ! </p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/10/graph.jpg" alt="" title="graph" width="500" height="115" class="cadre" /></center></p>
<p>Bon Profile à tous !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/29/utiliser-flex-profiling-pour-les-projets-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guide ActionScript Reference &amp; RIA Developpement</title>
		<link>http://www.tsoin.com/asblog/2008/10/28/guide-actionscript-reference-ria-developpement/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/28/guide-actionscript-reference-ria-developpement/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 16:23:57 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=110</guid>
		<description><![CDATA[Guide de référence, classant par ordre alphabétique l&#8217;ensemble des API native de Flash, Flex et AIR Guide RIA sur Adobe Developper Connection &#187;]]></description>
			<content:encoded><![CDATA[<p><center><a href="http://www.tsoin.com/asblog/wp-content/uploads/2008/10/atp_ria_guide.pdf" target="_blank"><img class="cadre" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/10/riaguide.jpg" border="0"></a></center></p>
<p>Guide de référence, classant par ordre alphabétique l&#8217;ensemble des API native de Flash, Flex et AIR</p>
<p><a href="http://www.adobe.com/devnet/actionscript/articles/atp_ria_guide.html" target="_blank">Guide RIA sur Adobe Developper Connection &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/28/guide-actionscript-reference-ria-developpement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modifier les paramètres d&#8217;un filtre PixelBender en AS3</title>
		<link>http://www.tsoin.com/asblog/2008/10/28/modifier-les-parametres-dun-filtre-pixelbender-en-as3/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/28/modifier-les-parametres-dun-filtre-pixelbender-en-as3/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 14:50:54 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[Flash10]]></category>
		<category><![CDATA[PBJ]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=107</guid>
		<description><![CDATA[Pour illustrer le changement de valeur d&#8217;un paramètre dans un filtre Pixel Bender, j&#8217;ai utilisé un filtre de Frank Reitberger &#187;, ce filtre est téléchargeable sur le Pixel Bender Exchange &#187;. Pour accéder aux paramètres du filtre &#171;&#160;smudge&#160;&#187;, il suffit &#8230; <a href="http://www.tsoin.com/asblog/2008/10/28/modifier-les-parametres-dun-filtre-pixelbender-en-as3/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pour illustrer le changement de valeur d&#8217;un paramètre dans un filtre Pixel Bender, j&#8217;ai utilisé un filtre de <a href="http://www.prinzipiell.com" target="_blank">Frank Reitberger &raquo;</a>, ce filtre est téléchargeable sur le <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&#038;loc=en_us&#038;extid=1557018" target="blank">Pixel Bender Exchange &raquo;</a>.</p>
<p>Pour accéder aux paramètres du filtre &laquo;&nbsp;smudge&nbsp;&raquo;, il suffit de passer par la propriété data de la classe Shader. Le filtre smudge n&#8217;a qu&#8217;un seul paramètre : <em>amount</em>. On peut le modifier de cette façon :</p>
<div class="codeAS">
[Embed("pb/smudger.pbj", mimeType="application/octet-stream")]<br />
private var _pbjFilter:Class;<br />
private var _shader:Shader = new Shader( new _pbjFilter() as ByteArray );<br />
private var _filtre:ShaderFilter = new ShaderFilter( _shader );</p>
<p><b>_shader.data.amount.value = [ 5.0 ]; </b>
</div>
<p>Le filtre ayant changé, il ne faut pas oublier de le réaffecter à la propriété <em>filters</em> de l&#8217;élément à modifier, au risque de ne voir aucun changement, malgré le changement de valeur des paramètres&#8230;. </p>
<p>Ci-dessous un exemple, la valeur du paramètre est modifiée suivant la position de la souris en x ( Flash 10 ) :<br />
<center>[kml_flashembed movie="http://tsoin.com/asblog/tutoriel/PixelBender/003/Pixelbender003.swf" height="370" width="600" /]</center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/28/modifier-les-parametres-dun-filtre-pixelbender-en-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser un filtre Pixel Bender en AS3</title>
		<link>http://www.tsoin.com/asblog/2008/10/28/utiliser-un-filtre-pixel-bender-en-as3/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/28/utiliser-un-filtre-pixel-bender-en-as3/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 11:24:02 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[Filtre]]></category>
		<category><![CDATA[Flash10]]></category>
		<category><![CDATA[Shader]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=105</guid>
		<description><![CDATA[Après avoir vu comment créer un filtre pixel bender, nous allons maintenant voir comment utiliser ce filtre en as3&#8230; Il faut tout d&#8217;abord exporter son filtre en .pbj, fichier qui sera loader en as3. Une fois cette première opération réaliser, &#8230; <a href="http://www.tsoin.com/asblog/2008/10/28/utiliser-un-filtre-pixel-bender-en-as3/">Lire la Suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Après avoir vu comment créer un <a target="_blank">filtre pixel bender</a>, nous allons maintenant voir comment utiliser ce filtre en as3&#8230;</p>
<p>Il faut tout d&#8217;abord exporter son filtre en .pbj, fichier qui sera loader en as3. Une fois cette première opération réaliser, il faut charger le pbj :<br />
- Méthode 1, avec un fichier externe au swf :</p>
<div class="codeAS">package {<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* 	Auteur: Vincent Helwig<br />
&nbsp;&nbsp;&nbsp;* 	Date: 27.10.2008<br />
&nbsp;&nbsp;&nbsp;* 	Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* 	Description: Chargement d&#8217;un fichier PBJ Pixel Bender<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</p>
<p>&nbsp;&nbsp;&nbsp;import flash.display.Sprite;<br />
&nbsp;&nbsp;&nbsp;import flash.events.Event;<br />
&nbsp;&nbsp;&nbsp;import flash.net.URLLoader;<br />
&nbsp;&nbsp;&nbsp;import flash.net.URLRequest;<br />
&nbsp;&nbsp;&nbsp;import flash.net.URLLoaderDataFormat;<br />
&nbsp;&nbsp;&nbsp;import flash.display.Shader;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(width = "600", height = "400", backgroundColor = "#000000", framerate = "30")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Main extends Sprite {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _loader:URLLoader;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _shader:Shader;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Main():void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_loader = new URLLoader();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_loader.dataFormat = URLLoaderDataFormat.BINARY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_loader.addEventListener(Event.COMPLETE, onLoadComplete);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_loader.load(new URLRequest(&laquo;&nbsp;bleu.pbj&nbsp;&raquo;));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function onLoadComplete(event:Event):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_shader = new Shader( _loader.data );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}
</p></div>
<p>- Méthode 2, avec un fichier intégré au swf :</p>
<div class="codeAS">package {	</p>
<p>&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* 	Auteur: Vincent Helwig<br />
&nbsp;&nbsp;&nbsp;* 	Date: 27.10.2008<br />
&nbsp;&nbsp;&nbsp;* 	Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* 	Description: Embed d&#8217;un fichier PBJ Pixel Bender<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</p>
<p>&nbsp;&nbsp;&nbsp;import flash.display.Sprite;<br />
&nbsp;&nbsp;&nbsp;import flash.display.Shader;<br />
&nbsp;&nbsp;&nbsp;import flash.utils.ByteArray;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(width = "600", height = "400", backgroundColor = "#000000", framerate = "30")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Embed extends Sprite {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Embed("bleu.pbj", mimeType="application/octet-stream")]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _pbjFilter:Class;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _shader:Shader;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Embed():void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_shader = new Shader( new _pbjFilter() as ByteArray );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}
</p></div>
<p>Quelque soit la méthode du chargement, la méthode d&#8217;utilisation est ensuite la même :</p>
<div class="codeAS">
private var _filtre:ShaderFilter;<br />
_filtre = new ShaderFilter(_shader);
</div>
<p>On peut alors utiliser le ShaderFitler sur tous les enfants héritant de la class DisplayObject, avec la propriété filters :</p>
<div class="codeAS">
private var _display:DisplayObject = new DisplayObject();<br />
_display.filters = [ _fitltre];
</div>
<p>On peut donc appliquer un filtre Pixel Bender sur un champ texte, sur une vidéo, sur une image, sur un bitmap, un Sprite, un UIComponent etc&#8230;</p>
<p>Ci-dessous un exemple de différent filtre sur une vidéo&#8230;. ( Flash 10 nécessaire, bien sur <img src='http://www.tsoin.com/asblog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p><center>[kml_flashembed movie="http://tsoin.com/asblog/tutoriel/PixelBender/001/Pixelbender001.swf" height="450" width="600" /]</center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/28/utiliser-un-filtre-pixel-bender-en-as3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

