<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2frenchfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Flashxpress</title>
	
	<link>http://www.flashxpress.net</link>
	<description>Ressources pour la création et les technologies du web</description>
	<lastBuildDate>Fri, 10 Sep 2010 14:39:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/flashxpress" /><feedburner:info uri="flashxpress" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=fr&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/bn/intatm_fr_1.gif">Subscribe with Mon Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/flashxpress" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fflashxpress" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Développement d’application pour iPhone en Flash : le retour</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/SHCmIWzoK2o/</link>
		<comments>http://www.flashxpress.net/news/developpement-dapplication-pour-iphone-en-flash-le-retour/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 14:39:43 +0000</pubDate>
		<dc:creator>olivier</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/?p=5229</guid>
		<description><![CDATA[Voila une très bonne nouvelle qui va en réjouir plus d&#8217;un, et nous les premiers. Apple à annoncé hier dans un communiqué de presse l&#8217;assouplissement de &#171;&#160;toute restriction concernant les outils de développement utilisés pour créer les applications iOS&#171;&#160;. Autrement dit, la possibilité de créer des applications pour l&#8217;iOS en Flash et de les diffuser [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flashxpress.net/wp-content/uploads/2010/09/illustrationArticleFlashIphone.png"><img class="alignnone size-full wp-image-5230" title="illustrationArticleFlashIphone" src="http://www.flashxpress.net/wp-content/uploads/2010/09/illustrationArticleFlashIphone.png" alt="" width="630" height="350" /></a></p>
<p>Voila une très bonne nouvelle qui va en réjouir plus d&#8217;un, et nous les premiers.</p>
<p>Apple à annoncé hier dans un <a title="communiqué de presse" href="http://www.apple.com/fr/pr/library/2010/09/09statement.html" target="_blank">communiqué de presse</a> l&#8217;assouplissement de &laquo;&nbsp;<em>toute restriction concernant les outils de développement utilisés pour créer les applications iOS</em>&laquo;&nbsp;.</p>
<p>Autrement dit, la possibilité de créer des applications pour l&#8217;iOS en Flash et de les diffuser sur l&#8217;Appel Store est de nouveau d&#8217;actualité.</p>
<p>Il est toutefois préciser que ces applications ne pourront pas télécharger de code.</p>
<p>De plus, selon <a href="http://blogs.adobe.com/conversations/2010/09/great-news-for-developers.html" target="_blank">Adobe</a>, la restriction de l&#8217;exécution des applications Flash dans le navigateur de l&#8217;iOS reste en place.</p>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/SHCmIWzoK2o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/developpement-dapplication-pour-iphone-en-flash-le-retour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.flashxpress.net/news/developpement-dapplication-pour-iphone-en-flash-le-retour/</feedburner:origLink></item>
		<item>
		<title>Yet another Lite 3D Engine to release</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/ves23846EKo/</link>
		<comments>http://www.flashxpress.net/news/yet-another-lite-3d-engine-to-release/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 13:07:58 +0000</pubDate>
		<dc:creator>Eric Ambrosi</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/news/yet-another-lite-3d-engine-to-release/</guid>
		<description><![CDATA[Aller sur Tweened.org us version Je mettrai en ligne courant de l&#8217;été une première release de la librairie Tweened. Celle-ci contient notamment, des composants, des behaviors, un wrapper de tween (facilitant la conception d&#8217;animation par code) ainsi qu&#8217;un mini moteur 3D très simple d&#8217;utilisation. En voici un exemple concret accessible ici et téléchargeable là. J&#8217;ai [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tweened.org">Aller sur Tweened.org</a></p>
<ul>
<li><a href="http://www.tweened.org/en/2010/06/17/yet-another-lite-3d-engine-to-release/">us version</a></li>
</ul>
<p><a title="3dleScreen" rel="lightbox[812]" href="http://www.tweened.org/wp-content/files/3dleScreen.jpg"><img class="aligncenter size-full wp-image-820" src="http://www.tweened.org/wp-content/files/3dleScreen.jpg" alt="" width="630" height="200" /></a></p>
<p>Je mettrai en ligne courant de l&#8217;été une première release de la librairie Tweened. Celle-ci contient notamment, des composants, des behaviors, un wrapper de tween (facilitant la conception d&#8217;animation par code) ainsi qu&#8217;un mini moteur 3D très simple d&#8217;utilisation. En voici un exemple concret accessible <a href="http://www.tweened.org/3DExample/">ici</a> et <a href="http://www.tweened.org/3DExample/Tweened.Test3DEngine.zip">téléchargeable là</a>.<br />
J&#8217;ai fais ce moteur avant tout pour des besoins personnels et afin de me remémorer les mathématiques projectives. Réinventer la poudre ne fais quelques fois pas de mal. L&#8217;idée est surtout de fournir une dll de moins de 40ko qui permet de faire de la 3D. Celle-ci sera utilisable pour les designers à travers Blend ou dans Visual Studio via C#.  Elle concentrera très vite toutes les fonctionnalités de base réellement utiles et que nous n&#8217;avons pas  actuellement via Blend : Caméra 3D, Container 3D, Scène 3D, détection des normales et z sorting intelligent (plus malin et performant que celui actuellement proposé dans Blend). J&#8217;y ajoute une classe utilitaire facilitant l&#8217;utilisation de mathématiques projectives.</p>
<p>Voilà ces composants :</p>
<ol>
<li>Un conteneur de type Scene3D (hérite de Panel).<br />
Tous les objets placés en sont sein voient leur propriétés Projection native lockée. Ceux-ci peuvent utilisées les propriétés attachées suivantes :</p>
<ul>
<li>Scene3D.LocalOffsetX</li>
<li>Scene3D.LocalOffsetY</li>
<li>Scene3D.LocalOffsetZ</li>
</ul>
<ul>
<li>Scene3D.GlobalOffsetX</li>
<li>Scene3D.GlobalOffsetY</li>
<li>Scene3D.GlobalOffsetZ</li>
</ul>
<ul>
<li>Scene3D.RotationX</li>
<li>Scene3D.RotationY</li>
<li>Scene3D.RotationZ</li>
</ul>
<p>Ils sont associés à une instance de type Element3D. Celle-ci est récupérable (lorsque l&#8217;événement <em>StartUp </em>de la scène 3d est diffusé) <em>via </em>une méthode d&#8217;extension ajoutées pour les instances d&#8217;<em>UIElement (GetElement3D)</em>.</li>
<li>Une caméra associée au conteneur Scene3D. Celle-ci offre les propriétés suivantes :
<ul>
<li>FieldOfView</li>
<li>Plan de clipping proche : NearPlane</li>
<li>Plan de clipping éloigné : FarPlane</li>
<li>Point de fuite (XVanishingPoint, YVanishingPoint)</li>
<li>Déplacement (OffsetXCamera, OffsetYCamera, OffsetZCamera)</li>
<li>Rotation (RotateXCamera, RotateYCamera, RotateZCamera)</li>
</ul>
</li>
</ol>
<p>Détection du changement de direction de la normale (Backface culling) et du produit scalaire via les événements <em>NormalDirectionChanged </em>et <em>DotProductChanged</em>. Ces événements sont diffusés par les instances de type Element3D.</p>
<p><a title="3DLE" rel="lightbox[812]" href="http://www.tweened.org/wp-content/files/3DLE.jpg"><img class="aligncenter size-full wp-image-817" src="http://www.tweened.org/wp-content/files/3DLE.jpg" alt="" width="620" height="565" /></a></p>
<p>Je suis en cours de finition d&#8217;un algorithme de tri des profondeurs. Ce moteur devrait être assez optimisé car son rendu ne repose pas sur un DispatcherTimer. Deplus, le pipeline de rendu est assez optimisé car il n&#8217;est pas récursif par défaut. Lorsqu&#8217;un seul objet est modifié, ce dernier invoque en interne une méthode <em>RenderElement</em>. A contrario, lorsque la scène ou la caméra sont modifiées, il devient récursif et met à jour l&#8217;ensemble des objets de la scène&#8230; A bientôt donc pour la release finale de la librairie Tweened&#8230;</p>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/ves23846EKo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/yet-another-lite-3d-engine-to-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.flashxpress.net/news/yet-another-lite-3d-engine-to-release/</feedburner:origLink></item>
		<item>
		<title>Adobe Air Challenge</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/RCbPjnun7dw/</link>
		<comments>http://www.flashxpress.net/news/adobe-air-challenge/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 15:39:41 +0000</pubDate>
		<dc:creator>Eric Ambrosi</dc:creator>
				<category><![CDATA[Evénements]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/?p=5209</guid>
		<description><![CDATA[AIR 2 et le Flash Player 10.1 sont désormais disponibles en version finale. A cette occasion Adobe lance l&#8217;événement Adobe Air Challenge. Ce dernier se déroulera à Paris le 18 juin est filmé et retransmis en live sur le site internet. 15 teams de développeurs et créatifs s&#8217;affronteront pendant 24h pour développer la meilleure appli [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flashxpress.net/wp-content/uploads/2010/06/AIC.jpg"><img class="aligncenter size-full wp-image-5210" title="AIC" src="http://www.flashxpress.net/wp-content/uploads/2010/06/AIC.jpg" alt="" width="630" height="200" /></a>AIR 2 et le Flash Player 10.1 sont désormais disponibles en version finale. A cette occasion Adobe lance l&#8217;événement <a href="http://www.adobeairchallenge.com/" target="_blank">Adobe Air Challenge</a>. Ce dernier se déroulera à Paris le 18 juin est filmé et retransmis en live sur le site internet.<br />
15 teams de développeurs et créatifs s&#8217;affronteront pendant 24h pour développer la meilleure appli Air.</p>
<p>A l’issue des 24h, les équipes remettront leur projet et un jury se réunira pour designer l’application gagnante. Toutes les applications réalisées pendant le <strong>AIR Challenge</strong> pourront être téléchargées sur le site web pendant 30 jours. L’application qui aura été la plus téléchargée à l’issue de ce délai recevra le prix « choix du public ».</p>
<p>N&#8217;hésitez pas à voter pour votre équipe préférée !  Erick Ghaumez de <a href="http://www.lafabrick.com/blog/" target="_blank">La Fabrick</a>, formateur chez Regart.net y participe, souhaitons-lui bonne chance <img src='http://www.flashxpress.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Alors rendez-vous le 18 juin à 15h !</p>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/RCbPjnun7dw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/adobe-air-challenge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.flashxpress.net/news/adobe-air-challenge/</feedburner:origLink></item>
		<item>
		<title>Expression Studio 4 version finale disponible</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/WEJNLeS1v-U/</link>
		<comments>http://www.flashxpress.net/news/expression-studio-4-version-finale-disponible/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 00:00:04 +0000</pubDate>
		<dc:creator>Eric Ambrosi</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/news/expression-studio-4-version-finale-disponible/</guid>
		<description><![CDATA[Aller sur Tweened.org La nouvelle version de la suite Expression Studio est dans les bacs ! Cette nouvelle release est déclinée en 3 versions : Expression Studio Ultimate Expression Studio Premium Expression Studio Web professional La version Expression Web n&#8217;intègre pas le logiciel Expression Blend mais uniquement Expression Design, Web et Encoder. Si vos développements [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tweened.org">Aller sur Tweened.org</a></p>
<p><a title="ES4" rel="lightbox[805]" href="http://www.tweened.org/wp-content/files/ES4.jpg"><img class="aligncenter size-full wp-image-806" src="http://www.tweened.org/wp-content/files/ES4.jpg" alt="" width="630" height="200" /></a></p>
<p>La nouvelle version de la suite <a href="http://www.microsoft.com/expression/" target="_blank">Expression Studio</a> est dans les bacs ! Cette nouvelle release est déclinée en 3 versions :</p>
<ul>
<li>Expression Studio Ultimate</li>
<li>Expression Studio Premium</li>
<li>Expression Studio Web professional</li>
</ul>
<p>La version Expression Web n&#8217;intègre pas le logiciel <a href="http://www.microsoft.com/expression/products/Blend_Overview.aspx" target="_blank">Expression Blend</a> mais uniquement Expression Design, Web et Encoder. Si vos développements s&#8217;orientent vers Silverlight ou WPF, il vous faudra acquérir la version Premium ou Ultimate. Cette politique possède l&#8217;avantage de s&#8217;adapter aux petits budgets. Pour la version Ultimate uniquement, vous bénéficierez également de Expression Encoder Pro qui offre le support d&#8217;une plus grande variété de codecs en import comme en export. Celui-ci pourra notamment gérer de la diffusion de vidéos Smooth Streaming live ou l&#8217;encodage H.264 (la comparaison des features est <a href="http://www.microsoft.com/expression/products/EncoderPro_Overview.aspx" target="_blank">ici</a>). Autre changement de politique côté MSDN, concernant cette fois l&#8217;arrivée de numéros de série. Ceux-ci vous permettent d&#8217;installer la suite un nombre limité de fois. Il n&#8217;y a plus qu&#8217;à faire son choix&#8230;</p>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/WEJNLeS1v-U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/expression-studio-4-version-finale-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.flashxpress.net/news/expression-studio-4-version-finale-disponible/</feedburner:origLink></item>
		<item>
		<title>Flash Player RC7 disponible</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/Po7A22y6tdE/</link>
		<comments>http://www.flashxpress.net/news/flash-player-rc7-disponible/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 08:24:44 +0000</pubDate>
		<dc:creator>Eric Ambrosi</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/?p=5201</guid>
		<description><![CDATA[En attendant la version finale du Flash Player 10.1 qui sortira courant de ce mois, la Release Candidate n°7  est désormais disponible. Flash Player 10.1 RC7 continue de persévérer afin d&#8217;offrir un maximum de performances pour s&#8217;adapter au monde du mobile. Rappelons rapidement que Flash Player 10.1 apportera de nombreuses nouvelles fonctionnalités afin de répondre [...]]]></description>
			<content:encoded><![CDATA[<p>En attendant la version finale du Flash Player 10.1 qui sortira courant de ce mois, la Release Candidate n°7  est désormais disponible.</p>
<p><a href="http://www.flashxpress.net/wp-content/uploads/2010/06/FPRC7.jpg"><img class="aligncenter size-full wp-image-5202" title="FPRC7" src="http://www.flashxpress.net/wp-content/uploads/2010/06/FPRC7.jpg" alt="" width="630" height="200" /></a></p>
<p>Flash Player 10.1 RC7 continue de persévérer afin d&#8217;offrir un maximum de performances pour s&#8217;adapter au monde du mobile. Rappelons rapidement que Flash Player 10.1 apportera de nombreuses nouvelles fonctionnalités afin de répondre aux objectifs fixé par l&#8217;<a href="http://www.openscreenproject.org/" target="_blank">Open Screen Project</a> initié par de nombreux constructeurs. Voici une liste non exhaustive des fonctionnalité les plus symboliques :</p>
<ul>
<li>Performances accrues. Orienté vers la mobilité avec plus de performances moins de consommation de ressources processeur et de mémoire.</li>
<li>Gestion de l&#8217;utilisation des claviers physique de téléphone</li>
<li>Support du Multi-touch et de la gestuelle</li>
<li>Gestion de l&#8217;accéléromètre</li>
<li>Support de l&#8217;orientation de l&#8217;écran</li>
<li>Production de swf optimisé pour les mobiles</li>
<li>Mode &laquo;&nbsp;veille&nbsp;&raquo;</li>
<li> Support de l’accélération matérielle spécifique à la lecture de vidéos H.264. Les processeurs supportés sont les suivants : INTEL graphics HD  Broadcom ou cartes graphique ATI et Nvidia, ION compris. Cette accélération n&#8217;est aujourd&#8217;hui pas supportée sur MacOS mais uniquement par les systèmes windows (à partir de la version Windows XP)</li>
<li>Cadence (frame rate) du player adaptative</li>
<li>Gestion des erreurs globales</li>
<li>Intégration aux navigateurs amélioré</li>
<li>Mode vie privée du navigateur (desktop uniquement)</li>
<li>Gestion avancé de la mémoire</li>
</ul>
<p>Si vous souhaitez plus de précision sur toutes ces avancées, n&#8217;hésitez pas à consulter la liste exhaustive qui se trouve <a href="http://labs.adobe.com/technologies/flashplayer10/releasenotes.pdf" target="_blank">ici</a>.</p>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/Po7A22y6tdE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/flash-player-rc7-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.flashxpress.net/news/flash-player-rc7-disponible/</feedburner:origLink></item>
		<item>
		<title>Design Time Resources dans Blend 4</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/mMuoekDASQA/</link>
		<comments>http://www.flashxpress.net/news/design-time-resources-dans-blend-4/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 10:20:24 +0000</pubDate>
		<dc:creator>Eric Ambrosi</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/news/design-time-resources-dans-blend-4/</guid>
		<description><![CDATA[Aller sur Tweened.org us version Blend 4 nous offre de nouvelles fonctionnalités et l&#8217;une d&#8217;entre elles est assez obscure de prime abord. Dorénavant, il est possible dans Expression Blend de créer des ressources uniquement utilisées au design time (au moment de la conception sous Blend ou Visual Studio). Le problème est assez banal, Il est [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tweened.org">Aller sur Tweened.org</a></p>
<ul>
<li><a href="http://www.tweened.org/en/2010/06/07/design-time-resources-dans-blend-4/">us version</a></li>
</ul>
<p><a title="entete" rel="lightbox[797]" href="http://www.tweened.org/wp-content/files/entete.jpg"><img class="aligncenter size-full wp-image-803" src="http://www.tweened.org/wp-content/files/entete.jpg" alt="" width="630" height="200" /></a></p>
<p>Blend 4 nous offre de nouvelles fonctionnalités et l&#8217;une d&#8217;entre elles est assez obscure de prime abord. Dorénavant, il est possible dans Expression Blend de créer des ressources uniquement utilisées au design time (au moment de la conception sous Blend ou Visual Studio). Le problème est assez banal, Il est souvent nécessaire d&#8217;affecter des ressources graphiques qui ne sont définies qu&#8217;à l&#8217;exécution. Du coup, dans l&#8217;espace de travail graphique, sous Visual Studio ou Blend, celles-ci  ne sont pas résolues puisque pas encore définies. Cela occasionne des erreurs d&#8217;accès et quelques problèmes d&#8217;affichage. Blend 4 permet maintenant de résoudre cette problématique mais la manière de procéder n&#8217;est pas très évidente. L&#8217;objectif est de créer un dictionnaire de ressource contenant une ressource ou plusieurs ressources que vous utiliserez uniquement au design time. Le première chose à faire consiste à créer un projet ainsi qu&#8217;une ressource contenue dans un dictionnaire de ressource. Un dégradé ou un solidColorBrush fera bien l&#8217;affaire (voir ci-dessous).</p>
<p><a title="etape1" rel="lightbox[797]" href="http://www.tweened.org/wp-content/files/etape1.jpg"><img class="aligncenter size-medium wp-image-798" src="http://www.tweened.org/wp-content/files/etape1-300x226.jpg" alt="" width="300" height="226" /></a></p>
<p>Ensuite supprimez le lien contenu par App.xaml, les ressources contenues sont désormais inaccessibles et vous obtenez des erreurs d&#8217;accès. Ce n&#8217;est pas grave, il vous faut passer par cette étape. Sauvegardez le projet puis ouvrez-le à nouveau sous Blend 4, vous obtenez une jolie boîte de dialogue vous indiquant si vous souhaitez créer un dictionnaire utilisable au design time (voir ci-dessous).</p>
<p><a title="etape2" rel="lightbox[797]" href="http://www.tweened.org/wp-content/files/etape2.jpg"><img class="aligncenter size-medium wp-image-799" src="http://www.tweened.org/wp-content/files/etape2-300x226.jpg" alt="" width="300" height="226" /></a>Pour finir, créez la ressource via C#, c&#8217;est cette dernière qui sera utilisée par Silverlight à l&#8217;exécution.</p>
<p><a title="etape3" rel="lightbox[797]" href="http://www.tweened.org/wp-content/files/etape3.jpg"><img class="aligncenter size-medium wp-image-800" src="http://www.tweened.org/wp-content/files/etape3-300x226.jpg" alt="" width="300" height="226" /></a>Au final vous obtenez deux rendus différents. Le premier concerne le design time, le second correspond au rendu final à l&#8217;exécution utilisant la ressource instanciée lors de l&#8217;initialisation <img class="wp-smiley" src="http://www.tweened.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" /> Du coup, le designer est complètement autonomes. Au final, ce procédé n&#8217;est pas très orthodoxe mais il est très utile. Le principe ne repose sur rien d&#8217;autre qu&#8217;une compilation conditionnelle générée au niveau du projet(.csproj). Le code suivant :</p>
<pre>&lt;Page Include="Properties\DesignTimeResources.xaml"&gt;</pre>
<pre> &lt;Generator&gt;MSBuild:Compile&lt;/Generator&gt;
 &lt;SubType&gt;Designer&lt;/SubType&gt;</pre>
<pre> &lt;/Page&gt;</pre>
<p>est remplacé par celui-ci :</p>
<pre>&lt;Page Include="Properties\DesignTimeResources.xaml"</pre>
<pre>Condition="'$(DesignTime)'=='true'</pre>
<pre>OR ('$(SolutionPath)'!='' AND Exists('$(SolutionPath)')</pre>
<pre>AND '$(BuildingInsideVisualStudio)'!='true'</pre>
<pre>AND '$(BuildingInsideExpressionBlend)'!='true')"&gt;</pre>
<pre> &lt;Generator&gt;MSBuild:Compile&lt;/Generator&gt;
&lt;SubType&gt;Designer&lt;/SubType&gt;
 &lt;ContainsDesignTimeResources&gt;true&lt;/ContainsDesignTimeResources&gt;</pre>
<pre> &lt;/Page&gt;
</pre>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/mMuoekDASQA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/design-time-resources-dans-blend-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.flashxpress.net/news/design-time-resources-dans-blend-4/</feedburner:origLink></item>
		<item>
		<title>SWF partagé et RSL en AS3 avec FlashDevelop</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/cqJn5uwar3I/</link>
		<comments>http://www.flashxpress.net/ressources-flash/swf-partage-et-rsl-en-as3-avec-flashdevelop/#comments</comments>
		<pubDate>Tue, 25 May 2010 15:37:22 +0000</pubDate>
		<dc:creator>alama</dc:creator>
				<category><![CDATA[Flash ActionScript]]></category>
		<category><![CDATA[Ressources Flash]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Develop]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[swc]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/?p=5168</guid>
		<description><![CDATA[Ce tutorial a pour but d’expliquer comment faire une application AS3  utilisant une Runtime Shared Library (RSL) compilée avec FlashDevelop et le Flex SDK. L&#8217;avantage d&#8217;une RSL est le partage d&#8217;une même ressource de classes pour plusieurs applications ou modules SWF. L&#8217;application s&#8217;en trouve plus légère étant donné que la ressource est chargée dynamiquement au [...]]]></description>
			<content:encoded><![CDATA[<p>Ce tutorial a pour but d’expliquer comment faire une application AS3  utilisant une <strong>Runtime Shared Library</strong> (<strong>RSL</strong>) compilée avec FlashDevelop et le Flex SDK.</p>
<p>L&#8217;avantage d&#8217;une RSL est le partage d&#8217;une même ressource de classes pour plusieurs applications ou modules SWF. L&#8217;application s&#8217;en trouve plus légère étant donné que la ressource est chargée dynamiquement au RunTime. Très utile aussi pour externaliser des Skins dans un SWF externe afin de pouvoir le changer sans recompiler l&#8217;application, simplement en changeant le SWF RSL.</p>
<p>Il est important de distinguer qu&#8217;il s&#8217;agit de classes chargées dynamiquement, donc, instanciables à volonté, par rapport à  simplement charger un SWF avec la classe Loader, car dans ce cas, seuls, les objets (instances) sont accessibles. Le chargement de SWF par <code>[Embed]</code> permets l&#8217;intsanciation à volonté, mais sera compilé avec l&#8217;application, donc non chargés dynamiquement au runtime.</p>
<p>Nous verrons également une alternative un peu plus contraignante mais n&#8217;utilisant pas le framework Flex exploitant les propriétés de linkage export/import d&#8217;origines de Flash.</p>
<h3>Préparer un SWF RSL avec FlashDevelop ( SWC)</h3>
<p>Afin de pouvoir utiliser une RSL sous FlashDevelop, il faut 2 fichiers! un SWF qui contient les classes qui seront chargées au runTime et son Clone sous forme de SWC qui fournira les références de ces classes à FlashDevelop afin qu&#8217;elles existent au moment du codage. (obligatoire pour l&#8217;intelliscence et le compilateur).</p>
<p>Nous verrons que le SWC nous fournit tout ça, étant donné qu&#8217;un SWC n&#8217;est rien d&#8217;autre qu&#8217;une archive (zip, rar, ..) contenant le SWF et un XML de références.</p>
<p>Sous FD, créez un nouveau &laquo;&nbsp;AS3 Empty Project&nbsp;&raquo;. Créez vos nouvelles classes publiques AS3 à l&#8217;aide de la commande &laquo;&nbsp;Add&nbsp;&raquo; du menu contextuel de la fenêtre Project, dans le répertoire src.</p>
<p>Pour l&#8217;exemple, je crée 2 classes, une MyRectangle et une MyRound qui sont de simples objets graphiques.</p>
<p>Exemple pour la classe MyRectancle:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p5168code4'); return false;">View Code</a> ACTIONSCRIPT3</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51684"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code" id="p5168code4"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><a href="http://www.google.com/search?q=sprite%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:sprite.html"><span style="color: #004993;">Sprite</span></a><span style="color: #000066; font-weight: bold;">;</span>
    <span style="color: #3f5fbf;">/**
    * ...
    * @author Alama
    */</span>
&nbsp;
    <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> MyRectangle <span style="color: #0033ff; font-weight: bold;">extends</span> <a href="http://www.google.com/search?q=sprite%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:sprite.html"><span style="color: #004993;">Sprite</span></a>
    <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> MyRectangle<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		<span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">beginFill</span><span style="color: #000000;">&#40;</span>0xFF0000<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">drawRect</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">150</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">100</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">endFill</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Une fois les classes terminées, il faut compiler le projet en SWC. Celà peut être fait simplement à l&#8217;aide du plugin SWC pour FD que l&#8217;on peut trouver ici: <a href="http://sourceforge.net/projects/exportswc/">http://sourceforge.net/projects/exportswc/</a></p>
<p>On peut également le faire manuellement à l&#8217;aide du compilateur du flex SDK compc. voir les commande ici:<br />
<a href="http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_22.html">http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_22.html</a></p>
<h3>Préparer un SWF RSL avec Flash CS (création d&#8217;un SWC)</h3>
<p>Dans un nouveau projet Flash, créez un symbole par élément (classe) qui sera désiré dans votre fichier partagé.</p>
<p>Le SWC que nous allons créer doit contenir toutes les classes des objets créés en bibliothèque. Donc, pour chaque symbole de la bibliothèque, il faut les e<strong>xporter pour ActionScript</strong>. Il n&#8217;est pas obligatoire de les avoir sur la scène, uniquement en bibliothèque est suffisant. <strong>Mettez une majuscule à vos noms de symboles</strong>, car ce seront des classes.</p>
<p><a rel="attachment wp-att-255" href="http://www.flashxpress.net/?attachment_id=255"><img class="aligncenter size-full wp-image-255" src="http://www.covergraph.com/blog/wp-content/uploads/2010/05/flash01.jpg" alt="flash01" width="425" height="549" /></a></p>
<p>Une fois tous les symboles créés, il suffit de publier votre projet Flash en cochant la case &laquo;&nbsp;<strong>Exporter SWC</strong>&nbsp;&raquo; de l&#8217;onglet Flash des Paramètres de publication.</p>
<p><a rel="attachment wp-att-307" href="http://www.flashxpress.net/?attachment_id=307"><img class="aligncenter size-full wp-image-307" src="http://www.covergraph.com/blog/wp-content/uploads/2010/05/flash04.jpg" alt="flash04" width="449" height="656" /></a></p>
<h3>Préparer et configurer FlashDevelop pour l&#8217;utilisation de Runtime Shared Libraries</h3>
<p>Sous FD, créez un nouveau projet AS3.  <strong>Une des caractéristiques des RSLs est qu&#8217;elles ne sont normalement pas utilisables en AS3 pure!</strong> Du moins, à l&#8217;heure où ces lignes sont écrites, on peut supposer qu&#8217;Adobe changera ça prochainement. Il s&#8217;agit d&#8217;une fonctionnalité qui est prise en charge par Flex.  On peut contourner le problème en étendant notre Classe document en &laquo;&nbsp;<code>SimpleApplication</code>&nbsp;&raquo; Flex.</p>
<p>Pour ce faire, il est nécessaire d&#8217;utiliser la classe <code>SimpleApplication</code> de Flex. Il faut donc installer le fichier framework.swc dans notre projet (il se trouve dans le répertoire lib du framework Flex SDK). Je le place dans le répertoire &laquo;&nbsp;lib&nbsp;&raquo; mais ce n&#8217;est pas une obligation.</p>
<p>Ensuite, à l&#8217;aide du clic droit, il faut l&#8217;ajouter à la librairie de FD (&laquo;&nbsp;Add To Library&nbsp;&raquo;), comme représenté sur cette image:</p>
<p><a rel="attachment wp-att-304" href="http://www.flashxpress.net/?attachment_id=304"><img class="aligncenter size-full wp-image-304" src="http://www.covergraph.com/blog/wp-content/uploads/2010/05/fd011.jpg" alt="fd011" width="413" height="541" /></a></p>
<p>Ensuite, nous avons besoin d&#8217;installer notre SWC créé précédemment de la même manière que nous avons installé le framework.swc. Mais nous avons également besoin d&#8217;installer le SWF correspondant au SWC dans le répertoire où s&#8217;éxécutera notre application (runtime), en l&#8217;occurrence ici, le répertoire &laquo;&nbsp;bin&nbsp;&raquo;.</p>
<p>Nous avons vu plus haut ce que contenait un SWC (SWF + XML). Donc, il faut ouvrir le SWC à l&#8217;aide d&#8217;un programme d&#8217;archives tel que WinRar. Extraire une copie du SWF (normalement appelé &laquo;&nbsp;library.swf&nbsp;&raquo;) et placer cette copie dans le répertoire &laquo;&nbsp;bin&nbsp;&raquo; de notre projet. En ouvrant l&#8217;arborescence de nos fichiers SWF et SWC de notre fenêtre Project, on voit qu&#8217;ils contiennent identiquement les mêmes classes.</p>
<p>Le SWC ne nous sert que de référence, il ne doit pas être compilé et inclus dans notre application finale, puisque les classes en questions seront chargée dynamiquement au runtime depuis le SWF RSL.</p>
<p>Pour éviter que ce SWC soit compilé, il faut l&#8217;exclure de la manière suivante : Clic droit &gt;  Options &gt; External Library.</p>
<p><a rel="attachment wp-att-261" href="http://www.flashxpress.net/?attachment_id=261"><img class="aligncenter size-full wp-image-261" src="http://www.covergraph.com/blog/wp-content/uploads/2010/05/fd02.jpg" alt="fd02" width="330" height="306" /></a></p>
<p>On a presque fini! il ne nous reste plus qu&#8217;a informer le compilateur du fichier RSL à utiliser au runtime, grâce à cela, il ne cherchera pas les classes manquantes puisqu&#8217;on lui dit qu&#8217;elles seront chargées au runtime.</p>
<p>Pour ce faire, dans le menu principal de FalshDevelop il faut aller dans: Project &gt; Properties &gt; Compiler Options.</p>
<p>Dans &laquo;&nbsp;Additional Compiler Options&nbsp;&raquo;, cliquez le bouton à l&#8217;extrême droite.</p>
<p><a rel="attachment wp-att-262" href="http://www.flashxpress.net/?attachment_id=262"><img class="aligncenter size-full wp-image-262" src="http://www.covergraph.com/blog/wp-content/uploads/2010/05/fd03.jpg" alt="fd03" width="372" height="438" /></a></p>
<p>Dans la nouvelle fenêtre, il faut lui donner le chemin du fichier RSL. La 2 ème ligne sert a contourner une erreur de Sandox.  Comme ceci:</p>
<blockquote><p>-rsl library.swf<br />
-use-network=false</p></blockquote>
<p>Voilà, notre système RSL est mis en place, nous sommes prêt à programmer notre application.</p>
<p>Rappel d&#8217;une chose ! La classe document doit absolument étendre <code>SimpleApplication</code>, donc elle aura ce look ci:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p5168code5'); return false;">View Code</a> ACTIONSCRIPT3</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51685"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</pre></td><td class="code" id="p5168code5"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><a href="http://www.google.com/search?q=event%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:event.html"><span style="color: #004993;">Event</span></a><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.system</span><span style="color: #000066; font-weight: bold;">.</span><a href="http://www.google.com/search?q=security%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:security.html"><span style="color: #004993;">Security</span></a><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> mx<span style="color: #000066; font-weight: bold;">.</span>core<span style="color: #000066; font-weight: bold;">.</span>SimpleApplication<span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #3f5fbf;">/**
	 * ...
	 * @author Alama
	 */</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Main <span style="color: #0033ff; font-weight: bold;">extends</span> SimpleApplication
	<span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">stage</span><span style="color: #000000;">&#41;</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=event%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:event.html"><span style="color: #004993;">Event</span></a><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ADDED_TO_STAGE</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=event%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:event.html"><span style="color: #004993;">Event</span></a> = <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=event%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:event.html"><span style="color: #004993;">Event</span></a><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ADDED_TO_STAGE</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #009900; font-style: italic;">// entry point</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">rect</span><span style="color: #000066; font-weight: bold;">:</span>MyRectangle = <span style="color: #0033ff; font-weight: bold;">new</span> MyRectangle<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">rect</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> = <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #004993;">rect</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> = <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">rect</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">round</span><span style="color: #000066; font-weight: bold;">:</span>MyRound = <span style="color: #0033ff; font-weight: bold;">new</span> MyRound<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">round</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> = <span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #004993;">round</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> = <span style="color: #000000; font-weight:bold;">70</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">round</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>	
&nbsp;
	<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>L&#8217;implémentation d&#8217;un système RSL sous FlashDevelop est terminée. <img src='http://www.flashxpress.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>.</p>
<p>.</p>
<h2>Solution Alternative sans Flex</h2>
<p>Une autre solution sans utiliser le framework Flex ni l&#8217;obligation d&#8217;étendre la Classe Document en <code>SimpleApplication </code>consiste à utilsier le système classique de Flash CS, c&#8217;est à dire, l&#8217;export/import liking et de l&#8217;utiliser dans FlashDevelop à l&#8217;aide de la balise <code>[Embed]</code>.</p>
<p><strong>!!! Cette solution est intéressante, mais est plus contraignante car il nous faudra un couple de SWFs par Classe !!!</strong></p>
<p>Pour cela, nous avons absolument besoin de Flash. Nous devons créer 2 FLAs! Un pour l&#8217;Export qui sera le vrai Shared Library, car il contiendra les classes. Et un autre, qui servira de référence au premier par linkage. On pourrait tout faire dans le même FLA, mais par clarté, on en fait 2. Donc, Créons 2 répertoires, un appelé &laquo;&nbsp;<strong>share</strong>&nbsp;&raquo; et l&#8217;autre &laquo;&nbsp;<strong>links</strong>&nbsp;&raquo;</p>
<h3>Création des Shared SWFs</h3>
<p>Créez un FLA Sauvegardez le sous &laquo;&nbsp;share/shared_quelque_chose.fla&nbsp;&raquo;. Créez les symboles dont vous avez besoin.</p>
<p>Ensuite, nous devons  régler chaque symbole sur &laquo;&nbsp;<strong>Exporter</strong>..&nbsp;&raquo; . Dans la bibliothèque, clic droit sur chaque symbole &gt; &laquo;&nbsp;propriété&nbsp;&raquo; et cochez la case &laquo;&nbsp;<strong>Exporter pour le partage..</strong>&laquo;&nbsp;. L&#8217;URL n&#8217;est pas utile, si le nom de votre application se place automatiquement dedans, ça ne gênera pas. Comme ceci:</p>
<p><a rel="attachment wp-att-336" href="http://www.flashxpress.net/?attachment_id=336"><img class="aligncenter size-full wp-image-336" src="http://www.covergraph.com/blog/wp-content/uploads/2010/05/flash05.jpg" alt="flash05" width="425" height="549" /></a></p>
<p>Une fois terminé, il reste à exporter chaque symbole en <strong>SWF</strong> séparés dans le répertoire <strong>share</strong>. A nouveau clic droit sur chaque symbole comme cette image:</p>
<p><a rel="attachment wp-att-337" href="http://www.flashxpress.net/?attachment_id=337"><img class="aligncenter size-full wp-image-337" src="http://www.covergraph.com/blog/wp-content/uploads/2010/05/flash02.jpg" alt="flash02" width="402" height="407" /></a></p>
<p>Voilà, nos Shared SWFs sont à présent créés! (1 SWF par classe).</p>
<h3>Création des SWFs de références (linked)</h3>
<p>Tout en laissant ouvert le <strong>Shared..fla</strong> que nous venons de créer, créez un nouveau document et nommez le &laquo;&nbsp;<strong>Ref_links_quelque_chose.fla</strong>&laquo;&nbsp;, sauvegardez le dans le répertoire &laquo;&nbsp;<strong>links</strong>&nbsp;&raquo; Copier tous les symboles de la bibliothèque du FLA <strong>Share </strong>dans la bibliothèque du FLA <strong>links </strong>par la commande &laquo;&nbsp;copier/coller&nbsp;&raquo;.</p>
<p>Nous devons cette fois, régler les propriétés de chaque symbole de ce nouveau FLA sur &laquo;&nbsp;<strong>Importer pour le partage..</strong>&nbsp;&raquo;</p>
<p><strong>Attention!!</strong> <strong>ici, dans le champs</strong> &laquo;&nbsp;<strong>URL:</strong>&nbsp;&raquo; <strong>il faut impérativement donner le chemin du SHARED SWF auquel ce symbole sera lié!!</strong></p>
<p><strong></strong> Donc, en mettant les mêmes noms que le SWF qui contient réellement les classes. comme ceci:</p>
<p><a rel="attachment wp-att-342" href="http://www.flashxpress.net/?attachment_id=342"><img class="aligncenter size-full wp-image-342" src="http://www.covergraph.com/blog/wp-content/uploads/2010/05/flash03.jpg" alt="flash03" width="425" height="549" /></a></p>
<p>Pour terminer, exportez tous les symboles en SWF dans le répertoire &laquo;&nbsp;<strong>links</strong>&laquo;&nbsp;.</p>
<h3>Utilisation des SWFs sous FlashDevelop</h3>
<p>Créez un nouveau Project AS3, placez tous les SWFs du répertoire &laquo;&nbsp;<strong>links</strong>&nbsp;&raquo; dans le répertoire &laquo;&nbsp;<strong>lib</strong>&nbsp;&raquo; du projet et tous les SWFs du répertoire &laquo;&nbsp;<strong>share</strong>&nbsp;&raquo; dans le répertoire &laquo;&nbsp;<strong>bin</strong>&nbsp;&raquo; du projet.</p>
<p>Ajouter tous les SWFs de &laquo;&nbsp;<strong>lib</strong>&nbsp;&raquo; à la librairie de FD. (Clic droit &gt; add to library). Ce n&#8217;est pas obligé dans ce cas ci, mais c&#8217;est mieux pour l&#8217;auto complétion.</p>
<p>A présent, vous pouvez Embeder vos SWF link (ceux du répertoire lib) dans votre code.   Vous pouvez cliquer droit dessus et faire &laquo;&nbsp;Insert Into Document&nbsp;&raquo;.</p>
<p>Une fois les swf embarqués et déclarés en tant que <code>Class</code>, vous pouvez les instancier comme n&#8217;importe quelle autre classe.</p>
<p>Voici un exemple d&#8217;utilisation:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p5168code6'); return false;">View Code</a> ACTIONSCRIPT3</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51686"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</pre></td><td class="code" id="p5168code6"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><a href="http://www.google.com/search?q=movieclip%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:movieclip.html"><span style="color: #004993;">MovieClip</span></a><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><a href="http://www.google.com/search?q=sprite%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:sprite.html"><span style="color: #004993;">Sprite</span></a><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><a href="http://www.google.com/search?q=event%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:event.html"><span style="color: #004993;">Event</span></a><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #3f5fbf;">/**
	 * ...
	 * @author Alama
	 */</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Main <span style="color: #0033ff; font-weight: bold;">extends</span> <a href="http://www.google.com/search?q=sprite%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:sprite.html"><span style="color: #004993;">Sprite</span></a>
	<span style="color: #000000;">&#123;</span>
		<span style="color: #000000;">&#91;</span>Embed<span style="color: #000000;">&#40;</span><span style="color: #004993;">source</span> = <span style="color: #990000;">'../lib/btn.swf'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> Btn<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=class%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:class.html"><span style="color: #004993;">Class</span></a><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#91;</span>Embed<span style="color: #000000;">&#40;</span><span style="color: #004993;">source</span> = <span style="color: #990000;">'../lib/round.swf'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> Round<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=class%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:class.html"><span style="color: #004993;">Class</span></a><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#91;</span>Embed<span style="color: #000000;">&#40;</span><span style="color: #004993;">source</span> = <span style="color: #990000;">'../lib/ovale.swf'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> Ovale<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=class%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:class.html"><span style="color: #004993;">Class</span></a><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">stage</span><span style="color: #000000;">&#41;</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=event%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:event.html"><span style="color: #004993;">Event</span></a><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ADDED_TO_STAGE</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=event%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:event.html"><span style="color: #004993;">Event</span></a> = <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=event%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:event.html"><span style="color: #004993;">Event</span></a><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ADDED_TO_STAGE</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">init</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// entry point</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> btn<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=movieclip%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:movieclip.html"><span style="color: #004993;">MovieClip</span></a> = <span style="color: #0033ff; font-weight: bold;">new</span> Btn<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			btn<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> = <span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">;</span> btn<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> = <span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>btn<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">round</span><span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=movieclip%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:movieclip.html"><span style="color: #004993;">MovieClip</span></a> = <span style="color: #0033ff; font-weight: bold;">new</span> Round<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">round</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> = <span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #004993;">round</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> = <span style="color: #000000; font-weight:bold;">150</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">round</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> ovale<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=movieclip%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:movieclip.html"><span style="color: #004993;">MovieClip</span></a> = <span style="color: #0033ff; font-weight: bold;">new</span> Ovale<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			ovale<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> = <span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">;</span> ovale<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> = <span style="color: #000000; font-weight:bold;">250</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>ovale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<blockquote><p>this.tutorial.terminate( <img src='http://www.flashxpress.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  );</p></blockquote>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/cqJn5uwar3I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-flash/swf-partage-et-rsl-en-as3-avec-flashdevelop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.flashxpress.net/ressources-flash/swf-partage-et-rsl-en-as3-avec-flashdevelop/</feedburner:origLink></item>
		<item>
		<title>Silverlight Smooth Streaming plugin for WordPress</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/PH6THmLvQBA/</link>
		<comments>http://www.flashxpress.net/news/silverlight-smooth-streaming-plugin-for-wordpress/#comments</comments>
		<pubDate>Mon, 24 May 2010 09:30:45 +0000</pubDate>
		<dc:creator>Eric Ambrosi</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/news/silverlight-smooth-streaming-plugin-for-wordpress/</guid>
		<description><![CDATA[Aller sur Tweened.org us version Je mets en ligne un nouveau plugin wordpress produit par Regart.net. Il s&#8217;agit d&#8217;un lecteur vidéo smooth streaming également capable de lire une vidéo standard au format wmv, ou mov, mp4 (lorsque la vidéo est encodée en H264). Il vous faudra tout de même héberger la vidéo sur un serveur [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tweened.org">Aller sur Tweened.org</a></p>
<ul>
<li><a href="http://www.tweened.org/en/2010/05/24/silverlight-smooth-streaming-plugin-for-wordpress/">us version</a></li>
</ul>
<object data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="400px"><param name="source" value="http://www.flashxpress.net/wp-content/plugins/sl-playerss/silverlight/playerss.xap"/><param name="onerror" value="onSilverlightError" /><param name="background" value="white" /><param name="minRuntimeVersion" value="3.0.40818.0" /><param name="autoUpgrade" value="true" /><param  name="initParams" value="videoUrl=http://www.tweened.org/wp-content/files/toystory3_720p.mp4,autoPlay=true,themeColorOne=726A5D,themeColorTwo=999285" /><a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration: none;"><img src="http://go.microsoft.com/fwlink/?LinkID=161376" alt="Get Microsoft Silverlight" style="border-style: none"/></a></object>
<p><a href="http://www.tweened.org/wp-content/files/sl-playerss.zip" target="_blank">Je mets en ligne un nouveau plugin wordpress</a> produit par <a href="http://www..regart.net" target="_blank">Regart.net</a>. Il s&#8217;agit d&#8217;un lecteur vidéo smooth streaming également capable de lire une vidéo standard au format wmv, ou mov, mp4 (lorsque la vidéo est encodée en H264). Il vous faudra tout de même héberger la vidéo sur un serveur IIS si vous souhaitez bénéficier du smooth streaming. Le configurer est relativement simple puisque nous fournissons une fenêtre d&#8217;administration côté WordPress. Celle-ci possède un aperçu du lecteur, la possibilité de modifier la couleur, l&#8217;url de la vidéo, la lecture automatique, les dimensions ainsi que la couleur de fond du player. Celui-ci vous avertit, lorsque la vidéo n&#8217;est pas hébergée sur votre serveur, des contrainte de sécurité que vous pourriez rencontrer (crossdomain.xml ou clientaccesspolicy.xml nécessaire et configuré).</p>
<p><a title="ScreenShotAdmin" rel="lightbox[766]" href="http://www.tweened.org/wp-content/files/ScreenShotAdmin.jpg"><img class="alignleft size-full wp-image-775" src="http://www.tweened.org/wp-content/files/ScreenShotAdmin.jpg" alt="" width="605" height="659" /></a></p>
<p>J&#8217;ai réalisé la conception côté Silverlight mais je n&#8217;ai pas utilisé pour cela le player fourni par Microsoft. J&#8217;ai préféré utiliser la librairie <a href="http://slextensions.codeplex.com/" target="_blank">SLExtensions</a> conçues par la société <a href="http://www.ucaya.com/" target="_blank">Ucaya</a> spécialisée dans la conception de ce type de lecteur. Par le passé, <a href="http://www.ucaya.com/" target="_blank">Ucaya </a>a réalisé les players du &laquo;&nbsp;Tour de France&nbsp;&raquo;, &laquo;&nbsp;Rolland Garros&nbsp;&raquo;, &laquo;&nbsp;France Télévision&nbsp;&raquo; et j&#8217;en passe. Quels sont les avantages me direz-vous ? C&#8217;est tout simple. Tout d&#8217;abord les fonctionnalités apportée par la librairie sont ultra complètes. De plus, celle-ci offre la possibilité de faire du Full MVVM, Du coup l&#8217;interface est entièrement Designable (bien mieux que skinnable). Pour finir, sa conception est assez fine car elle permet d&#8217;instancier un MediaElement ou l&#8217;équivalent pour le smooth streaming selon le type d&#8217;url que vous fournissez : ism et isml pour le smooth streaming et wmv, mov, mp4 (H264) pour les vidéos standards. Il est donc possible de faire un player à la carte et d&#8217;éviter l&#8217;arsenal fourni par la librairie SMF de Microsoft.</p>
<p>Ceux-ci sont directement issus de mon livre <a href="http://www.pearson.fr/livre/?GCOI=27440100843070" target="_blank"><em>Pratique de Silverlight</em></a> aux éditions <a href="http://www.pearson.fr" target="_blank">Pearson</a>. Vous pouvez consulter de nombreux schémas présent dans le livre sur <a href="http://referencesilverlight.tweened.org/" target="_blank">le blog dédié</a>.</p>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/PH6THmLvQBA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/silverlight-smooth-streaming-plugin-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.tweened.org/wp-content/files/toystory3_720p.mp4" length="36791707" type="video/mp4" />
		<feedburner:origLink>http://www.flashxpress.net/news/silverlight-smooth-streaming-plugin-for-wordpress/</feedburner:origLink></item>
		<item>
		<title>Invitation 17 mai, CS5 &amp; rencontre Designers et Dév.</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/FT_p7mTfMGw/</link>
		<comments>http://www.flashxpress.net/focus/invitation-17-mai-cs5-rencontre-designers-et-dev/#comments</comments>
		<pubDate>Fri, 07 May 2010 16:56:42 +0000</pubDate>
		<dc:creator>Muriel Charon</dc:creator>
				<category><![CDATA[Evénements]]></category>
		<category><![CDATA[Focus]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/?p=5146</guid>
		<description><![CDATA[Flashxpress vous invite Lundi 17 mai 2010 à partir de 13h30 AÉROCLUB DE FRANCE 6 rue Galilée Paris 16e À l’occasion de la sortie d’Adobe Creative Suite 5, venez découvrir Flash Catalyst CS5, Flash Professional CS5, Flash Builder 4 et Flex 4. Au cours de cet après midi, nous reviendrons sur les nouveautés majeures des [...]]]></description>
			<content:encoded><![CDATA[<p>Flashxpress vous invite</p>
<p>Lundi 17 mai 2010 à partir de 13h30<br />
AÉROCLUB DE FRANCE 6 rue Galilée Paris 16e</p>
<p>À l’occasion de la sortie d’Adobe Creative Suite 5, venez découvrir Flash Catalyst CS5, Flash Professional CS5, Flash Builder 4 et Flex 4.<br />
Au cours de cet après midi, nous reviendrons sur les nouveautés majeures des outils de la Creative Suite 5 et de Flex 4 pour les designers interactifs, les web designers et les développeurs d’applications.</p>
<p>Programme de la journée :</p>
<p><strong>13h30 à 14h00</strong> &#8211; Accueil</p>
<p><strong>14h00 à 15h30</strong> &#8211; SESSION PLÉNIÈRE : Nouveautés de<br />
Flash Pro CS5, Flash Catalyst CS5 &amp; Flash Builder 4.</p>
<p><strong>15h45 à 17h00</strong> &#8211; Un atelier au choix :</p>
<table border="0" cellspacing="0" cellpadding="0" width="465">
<tbody>
<tr>
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 13px; color: #c12e27;" width="20" height="35" align="center" valign="top"><strong>A</strong></td>
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;" width="445" height="35" valign="top"><a href="http://events.adobe.co.uk/cgi-bin/register.cgi?country=fr&amp;eventid=9632&amp;venueid=9785" target="_blank"><img src="http://www.flashxpress.net/wp-content/uploads/2010/04/register.jpg" border="0" alt="Inscription" align="right" /></a><strong>Flex 4 : skinning avancé de composants avec Spark </strong></td>
</tr>
<tr>
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 13px; color: #c12e27;" width="20" height="35" align="center" valign="top"><strong>B</strong></td>
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;" width="445" height="35" valign="top"><a href="http://events.adobe.co.uk/cgi-bin/register.cgi?country=fr&amp;eventid=9632&amp;venueid=9786" target="_blank"><img src="http://www.flashxpress.net/wp-content/uploads/2010/04/register.jpg" border="0" alt="Inscription" align="right" /></a><strong>Flash Builder 4 &amp; PhP (Zend &amp; Adobe)</strong></td>
</tr>
<tr>
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 13px; color: #c12e27;" width="20" height="50" align="center" valign="top"><strong>C</strong></td>
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;" width="445" height="50" valign="top"><a href="http://events.adobe.co.uk/cgi-bin/register.cgi?country=fr&amp;eventid=9632&amp;venueid=9787" target="_blank"><img src="http://www.flashxpress.net/wp-content/uploads/2010/04/register.jpg" border="0" alt="Inscription" align="right" /></a><strong>Animation, création, développement, travail en équipe,  découvrez toutes les nouveautés de Flash CS5 </strong></td>
</tr>
</tbody>
</table>
<p><strong>17h30 à 19h00</strong> &#8211; SESSION PLÉNIÈRE :<br />
Adobe et le développement d’applications sur mobiles.<br />
Optimiser du code ActionScript 3.<br />
Update sur le Flash Player 10.1.<br />
Adobe et le multi-touch.</p>
<p><strong><a href="http://www.flashxpress.net/wp-content/uploads/2010/04/logos.jpg"><img class="alignnone size-full wp-image-5132" src="http://www.flashxpress.net/wp-content/uploads/2010/04/logos.jpg" alt="" width="525" height="81" /></a></strong></p>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/FT_p7mTfMGw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/focus/invitation-17-mai-cs5-rencontre-designers-et-dev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.flashxpress.net/focus/invitation-17-mai-cs5-rencontre-designers-et-dev/</feedburner:origLink></item>
		<item>
		<title>Conception MVVM, l’exemple du diaporama</title>
		<link>http://feedproxy.google.com/~r/flashxpress/~3/Lzb0gTtUau4/</link>
		<comments>http://www.flashxpress.net/news/conception-mvvm-l%e2%80%99exemple-du-diaporama/#comments</comments>
		<pubDate>Fri, 07 May 2010 00:00:04 +0000</pubDate>
		<dc:creator>Eric Ambrosi</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/news/conception-mvvm-l%e2%80%99exemple-du-diaporama/</guid>
		<description><![CDATA[Aller sur Tweened.org us version Silverlight 4 et Blend 4 RC sont à peine sortis que l&#8217;on voit déjà tous les bénéfices apportés par ces derniers. Deux nouveautés ont retenues mon attention, l&#8217;amélioration du système de liaisons et le modèle de conception MVVM complètement géré dans Silverlight 4 via l&#8217;implémentation des commandes. L&#8217;objectif de cet [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tweened.org">Aller sur Tweened.org</a></p>
<ul>
<li><a href="http://www.tweened.org/en/2010/05/03/silverlight-4-dependency-object-and-mvvm/">us version</a></li>
</ul>
<p>Silverlight 4 et Blend 4 RC sont à peine sortis que l&#8217;on voit déjà tous les bénéfices apportés par ces derniers. Deux nouveautés ont retenues mon attention, l&#8217;amélioration du système de liaisons et le modèle de conception MVVM complètement géré dans Silverlight 4 via l&#8217;implémentation des commandes. L&#8217;objectif de cet article est de vous familiariser avec l&#8217;implémentation du modèle de conception MVVM (Modèle, Vue, Vue-Modèle) dans Silverlight 4 et de mettre en valeur les avantages apportés par le système de liaisons.</p>
<h4>I &#8211; Un mot sur le nouveau système de liaison</h4>
<p>Comme vous le savez sans doute, il est désormais possible de créer des liaisons de données entre différentes instances de <em>DependencyObject</em>. Auparavant, il était simplement impossible de créer une liaison de données lorsque vos objets n&#8217;héritaient pas de <em>FrameworkElement</em>. Dorénavant, tout ou presque est &laquo;&nbsp;bindable&nbsp;&raquo; et c&#8217;est tant mieux. Nous pouvons donc créer une liaison entre la rotation d&#8217;un <em>RenderTransform </em>et la propriété <em>Value </em>d&#8217;un <em>Slider</em>. Cet exemple est peut-être utile en matière de design mais pas vraiment pertinent pour un développeur. Nous montrerons donc plus loin les avantages de cette amélioration dans le cadre MVVM.</p>
<h4>II &#8211; Avant-propos</h4>
<p><strong>Sachez tout d&#8217;abord qu&#8217;il y a de nombreuses interprétations du modèle de conception MVVM, cet article ne reflète que ma propre vision de ce pattern</strong>. C&#8217;est en partie pour cette raison que le type de projet MVVM &laquo;&nbsp;Silverlight MVVM Application&nbsp;&raquo; que l&#8217;on pouvait générer dans Blend 4 bêta a été renommé Silverlight Databound Application dans la version RC. Cela permet de ne pas figer MVVM à une seule interprétation et en même temps de dépasser le cadre de ce type de développement.</p>
<h4>III &#8211; Introduction à MVVM</h4>
<p>MVVM est un principe de conception et d&#8217;organisation qui sépare le développement d&#8217;applications RIA en trois catégories : Modèle, Vue et Vue-Modèle. De cette manière, le code et le design d&#8217;une application sont totalement découplés et il est plus facile de les faire évoluer. Concrètement le développeur mettra à disposition du designer des appels de méthodes dans Vue-Modèle qui seront  très simple à appliquer sur des composants présents dans la vue.</p>
<p>L&#8217;avantage direct de cette méthodologie est de libérer le designer de toute contraintes en matière de design. Il ne se contentera pas de modifier l&#8217;aspect visuel de contrôles déjà choisis au préalable. Il pourra, au contraire, définir librement le type de contrôles, leur nom, les transitions sans avoir à se préoccuper des détails de l&#8217;implémentation.</p>
<p>Nous verrons un exemple concret de ce concept.</p>
<h3>1 &#8211; Qu&#8217;est-ce qu&#8217;une vue ?</h3>
<p>Pour faire simple une vue correspond à une interface visuelle dédiée aux interactions utilisateurs. Autrement dit, c&#8217;est là que vont agir les utilisateurs, celles-ci sont constituées de trois types de choses :</p>
<ul>
<li>Un arbre visuel et logique composé d&#8217;instances d&#8217;<em>UIElement.</em></li>
<li>Des transitions et des animations.</li>
<li>Des comportements logiques permettant, par exemple, de piloter animations et transitions.</li>
</ul>
<h3>2 &#8211; Une vue doit-elle contenir de la logique ?</h3>
<p>Ici 90% des développeurs disent non. Pour ma part, je pense qu&#8217;une vue doit contenir sa propre logique permettant de gérer ses animations et ses transitions. Dans la majorité des cas, ces tâches ne sont pas gérées par la création de code C# mais par l&#8217;utilisation de comportements (behaviors). Ainsi, il n&#8217;y a nullement besoin de code C# car les comportements répondent pleinement à cette problématique. Toute la difficulté de conception provient souvent du couplage possible existant entre la gestion des données et l&#8217;affichage. Les comportements ont également pour but de répondre à cette problématique. Ceux-ci sont donc déterminants lorsque vous concevez en mode MVVM.</p>
<h3>3 &#8211; Qu&#8217;est-ce que le Modèle ?</h3>
<p>Pour faire simple, le modèle contient les données, les mets à disposition. Le modèle gère également toute les appels distants ou opérations permettant les opérations CRUD (Create, Read, Update, Delete). Les développeurs utilisent souvent une classe statique afin d&#8217;y accéder simplement. Le modèle peut diffuser des événements si besoin pour indiquer l&#8217;état de chaque opération. Vous trouverez quelques développeurs qui verront modèle uniquement comme espace de stockage.</p>
<h3>4 &#8211; Qu&#8217;est-ce que Vue-Modèle ?</h3>
<p>C&#8217;est là le cœur du modèle de conception MVVM. Pour faire simple, <strong>Vue-Modèle est une abstraction de la vue d&#8217;un point de vue Modèle.</strong> Autrement dit, <strong>Vue-Modèle</strong> gère la liaison entre les données contenues dans le modèle et leur affichage dans la Vue. C&#8217;est donc l&#8217;intermédiaire entre Vue et Modèle.</p>
<p>On m&#8217;a récemment posé la question :</p>
<p>doit-on partir de Vue-Modèle ou doit concevoir d&#8217;abord la vue puis Vue-Modèle ?</p>
<p>Il n&#8217;y a pas de réponse simple à cette question. Cela dépend avant tout de votre métier et vers quel type de qualité vous souhaitez tirer l&#8217;application. Souhaitez-vous obtenir une forte interactivité graphique ou une architecture propre et efficace avec un maximum de performance ? Certains pensent que les deux sont possibles mais là encore il ne faut pas se leurrer, si l&#8217;un n&#8217;impactait pas l&#8217;autre nous n&#8217;aurions qu&#8217;un seul type de projet nommé Databound Application. Plus le graphisme et les interactions sont contraignantes, plus il est difficile de fournir une architecture propre et performante en conservant les mêmes délais. Toutefois, lors de la conception d&#8217;une application, il est vivement conseillé de partir d&#8217;un prototype. La vue est ce qu&#8217;il y a de plus concret pour votre client et pour vous en tant que développeur. C&#8217;est dans la vue que sont susceptibles de s&#8217;opérer de grande modification car c&#8217;est ce que le client souhaite mettre à disposition des utilisateurs. Ce ne serait pas forcément le discours d&#8217;un spécialiste SQL mais le client n&#8217;est pas là pour comprendre des schémas de Base de donnée. Dans le cas d&#8217;applications très standards comme un lecteur Vidéo, par exemple, il est possible de concevoir Modèle-Vue en premier car les opérations que souhaite réaliser l&#8217;utilisateur seront toujours les mêmes (Lecture, Stoppe, Pause, ect&#8230;). L&#8217;abstraction des commandes est, dans ce cas, très prévisible. Nous reviendrons sur la notion de commandes plus tard.</p>
<h3>5 &#8211; Vue-Modèle doit-il gérer les animations et les transitions ?</h3>
<p>Si l&#8217;on reprend la définition de base (Vue-Modèle est une abstraction de la vue d&#8217;un point de vue Modèle), Vue-Modèle ne doit pas gérer les animations directement mais notifier la vue par n&#8217;importe quel moyen (propre et efficace) afin que celle-ci déclenche transitions et animations. Encore une fois, les comportements vont grandement nous aider dans cette tâche. Toutefois, dans le cas d&#8217;animations créées dynamiquement ou dans certaines problématiques, il arrive que l&#8217;on soit obliger de gérer les animations dans Vue-Modèle. Il faudra dans ce cas créer une classe de gestion dédiée ou utiliser des propriétés de dépendances attachées. <strong>Tant que possible et contrairement à la croyance répandues, les vues contiennent la logique permettant l&#8217;affichage des transitions et animations, c&#8217;est à ça que sert le code behind du UserControl Vue</strong>. Les comportements ne sont rien d&#8217;autres que du code logique placés dans l&#8217;arbre visuel et logique. Il n&#8217;héritent pas de UIElement mais de DependencyObject. Par défaut, le développeur n&#8217;a pas à assurer cette gestion, cela est du ressort du designer interactif dans le meilleur des cas. Cela peut toutefois être remis en cause lorsque vous rencontrez certaines problématiques de conception.</p>
<h3>6 &#8211; Le tout MVVM ?</h3>
<p>La grande question, est-ce que vous devez toujours tout concevoir en MVVM ? La réponse est non. Voici mes arguments:</p>
<ul>
<li>Si c&#8217;était le cas on aurait pas différents types de projets.</li>
<li>Utiliser un seul modèle de conception est une pratique extrémiste qui ne répond pas toujours aux contraintes de temps imparties.</li>
<li>Selon la taille de vos projets et vos besoins en matière d&#8217;évolution et de changements, il n&#8217;est pas forcément utile d&#8217;utiliser MVVM car cela peut par certains côtés ajouter une touche de complexité. Par exemple, lorsque vous essaierez de créer des liaisons de données entre des collections d&#8217;objet présent dans la vue et des collections contenues dans Vue-Modèle.</li>
<li>Faire du Full MVVM relève avant tout du dogme, c&#8217;est comme si vous ne cuisiniez que des plats italiens. En bref vous passez à côté de la cuisine française, indienne, etc&#8230;</li>
<li>Plus le design et ses contraintes sont importants, plus il sera difficile de normaliser le développement. C&#8217;est l&#8217;éternel problématique du développement informatique. Le design et le développement représentent deux facettes de la production qui se lancent des défis en permanence. Pour vous en convaincre, essayez de penser le site suivant en MVVM pour toutes les pages :: <cite>www.<strong>experience159</strong>.com<br />
</cite></li>
</ul>
<h3>7 &#8211; Schéma récapitulatif</h3>
<p>Voici un schéma simple reprenant une partie de ce que nous avons exposé :</p>
<p><a href="http://www.tweened.org/wp-content/files/MVVMPattern.png" title="MVVMPattern" rel="lightbox[640]"><img class="aligncenter size-full wp-image-657" src="http://www.tweened.org/wp-content/files/MVVMPattern.png" alt="" width="495" height="650" /></a></p>
<p><a href="http://www.tweened.org/wp-content/files/MVVMPattern.png"></a>Après cette brève introduction, nous allons nous plonger dans la conception d&#8217;une application complète en MVVM.</p>
<h4>IV &#8211; Un diaporama MVVM côté Vue</h4>
<p><a href="http://www.tweened.org/wp-content/uploads/applis/GalleryMVVM_base.zip">Téléchargez le projet GalleryMVVM_base</a>. Ce projet est créé sur le modèle Silverlight Databound Application.Vous remarquez tout d&#8217;abord que <strong>MainPage.xaml</strong> contient une vue formalisée par un <em>UserControl</em> nommé <em>GalleryView</em>. On peut donc envisager <em>MainPage </em>comme un conteneur d&#8217;agencement des vues. Un répertoire contient les UserControl symbolisant la partie Vue, un autre contient les classes correspondant à Vue-Modèle, le dernier contient toutes les classes côté Modèle gérant l&#8217;accès aux données (voir Figure ci-dessous).</p>
<p><a href="http://www.tweened.org/wp-content/files/projetMVVM.jpg"></a><a href="http://www.tweened.org/wp-content/files/projetMVVM.jpg" title="projetMVVM" rel="lightbox[640]"><img class="size-full wp-image-720 alignleft" src="http://www.tweened.org/wp-content/files/projetMVVM.jpg" alt="" width="358" height="427" /></a></p>
<p>Dans GalleryView.xaml, tous nos objets sont déjà créés et designés, ce travail peut être réalisé indépendamment du développement côté C#. On considère que le développeur et le designer se sont mis d&#8217;accord sur un certain nombre de fonctionnalités listés ci-dessous :</p>
<ul>
<li>Afficher / cacher l&#8217;objet interactif (bouton par exemple) Image Précédente / Image Suivante</li>
<li>Charger Image suivante / précédente</li>
<li>Récupérer l&#8217;<em>ImageBrush </em>de la nouvelle et de l&#8217;ancienne image chargées (cela permet de créer des transitions)</li>
<li>Afficher la pagination</li>
<li>Afficher la description, le titre et l&#8217;url de l&#8217;image en cours</li>
<li>Naviguer vers l&#8217;état &laquo;&nbsp;chargement en cours&nbsp;&raquo; ou l&#8217;état &laquo;&nbsp;chargement terminé&nbsp;&raquo;</li>
<li>Afficher la barre de progression</li>
</ul>
<p>Le développeur et le designer ont donc élaboré chacun de leur côté une partie du projet. Le design étant finalisé, il nous faut maintenant récupérer l&#8217;abstraction Vue-Modèle, nommée <em>GalleryViewModel</em>, comme contexte de données de la vue. Nous reviendrons plus tard au code de <em>GalleryViewModel.</em> Ajoutez l&#8217;espace de nom <em>xmlns:local=&nbsp;&raquo;clr-namespace:GalleryMVVM&nbsp;&raquo;</em>, au sein du UserControl racine de <em>GalleryView.</em> Nous allons déclarer une nouvelle ressource de type<em> </em>GalleryViewModel comme montré ci-dessous :</p>
<p><a href="http://www.tweened.org/wp-content/files/code1.jpg" title="code1" rel="lightbox[640]"><img class="size-full wp-image-736 alignleft" src="http://www.tweened.org/wp-content/files/code1.jpg" alt="" width="592" height="324" /></a></p>
<p>Compilez l&#8217;application si besoin par un ctrl+maj+b, maintenant que nous avons instancié la Vue-Modèle comme ressource, nous pouvons facilement la définir comme contexte de données de la grille <em>LayoutRoot</em> comme montré ci-dessous.</p>
<p><a href="http://www.tweened.org/wp-content/files/AffecterVueModele.jpg" title="AffecterVueModele" rel="lightbox[640]"><img class="size-full wp-image-724 alignleft" src="http://www.tweened.org/wp-content/files/AffecterVueModele.jpg" alt="" width="400" height="394" /></a></p>
<p>Cela n&#8217;est pas suffisant, le mieux est de créer une liaison de données car cela permet de mettre à jour la Vue quand Vue-Modèle change, et inversement ( avec liaison à deux voies). Nous remplaçons cette expression</p>
<p><a href="http://www.tweened.org/wp-content/files/code2.jpg" title="code2" rel="lightbox[640]"><img class="size-full wp-image-737 alignleft" src="http://www.tweened.org/wp-content/files/code2.jpg" alt="" width="558" height="21" /></a></p>
<p>par celle-là :</p>
<p><a href="http://www.tweened.org/wp-content/files/code3.jpg" title="code3" rel="lightbox[640]"><img class="size-full wp-image-738 alignleft" src="http://www.tweened.org/wp-content/files/code3.jpg" alt="" width="657" height="20" /></a></p>
<p>Rendez-vous maintenant dans le panneau Data, conservez <em>LayoutRoot </em>sélectionné et dépliez Data Context. Vous obtenez une liste de propriétés et de commandes correspondant au cahier des charges établi entre développeur et designer (voir ci-dessous).</p>
<p><a href="http://www.tweened.org/wp-content/files/ContratVueModele.jpg" title="ContratVueModele" rel="lightbox[640]"><img class="size-full wp-image-726 alignleft" src="http://www.tweened.org/wp-content/files/ContratVueModele.jpg" alt="" width="384" height="407" /></a></p>
<p>Du côté de la vue le tour est joué, il suffit de glisser déposer, les propriétés et les commandes sur les objets de l&#8217;arbre visuel et logique. Il est également possible de procéder via l&#8217;utilisation du menu DataBinding obtenu lorsque vous cliquez sur l&#8217;icône carré présente à droite de chaque propriété d&#8217;objet.</p>
<p>Vous pouvez faire un simple test en glissant déposant les commandes <em>DisplayNextPicture </em>et <em>DisplayPreviousPicture</em> sur les boutons et établir une liaison entre le remplissage du <em>Rectangle</em> nommé  <em>newBitmap </em>et la propriété <em>NewPictureIB </em>de la Vue-Modèle. Comme vous le constater, le diaporama est entièrement designable, autrement dit, le graphiste peut choisir librement le type, l&#8217;agencement, le nom des composants ainsi que les états visuels qu&#8217;il souhaite activer. Pour glisser déposer les propriétés de la Vue-Modèle en choisissant la propriété ciblée, il suffit d&#8217;appuyer sur la touche alt en même temps que le glisser-déposer.</p>
<h4>V &#8211; Gérer les transitions</h4>
<p>Le nouveau système de liaison apporté par Silverlight 4 nous donne pas mal de souplesse lorsque l&#8217;on développe un projet en suivant ce modèle de conception. Dans ce mode de conception, on essaie de limiter au maximum le code logique de chaque vue, il est donc assez pratique d&#8217;utiliser des comportements au sein de Blend pour gérer les transitions et les animations. Nous allons utiliser le nouveau système de liaison basé applicable à l&#8217;ensemble des instances de type <em>DependencyObject </em>pour gérer nos comportements interactifs.</p>
<h3>1 &#8211; Déclencher les transitions</h3>
<p>C&#8217;est une des problématiques majeures lorsque l&#8217;on évoque MVVM. En premier lieu, Microsoft propose un comportement interactif nommé <em>DataStateBehavior</em> qui facilite cette gestion. Vous pouvez le déposer sur <em>LayoutRoot</em>, celui-ci est capable de déclencher une transition selon la valeur d&#8217;une propriété de Vue-Modèle. Dans notre cas, il s&#8217;agit de la propriété <em>IsLoaded </em>qui a pour valeur false lorsque la nouvelle image est en cours de chargement, et true lorsque celle-ci est chargée. La figure ci-dessous affiche le paramétrage du comportement.</p>
<p><a href="http://www.tweened.org/wp-content/files/DataStateBehavior.jpg" title="DataStateBehavior" rel="lightbox[640]"><img class="size-full wp-image-733 alignleft" src="http://www.tweened.org/wp-content/files/DataStateBehavior.jpg" alt="" width="279" height="242" /></a></p>
<p>Concrètement, il suffit de créer une liaison entre la propriété Binding du comportement et la propriété IsLoaded de la Vue-Modèle. Lorsque la valeur attendue est égale à <em>True </em>alors on affiche l&#8217;état visuel <em>Completed </em>sinon on affiche l&#8217;état visuel <em>Loading</em>. Cela peut sembler étrange de mettre un T majuscule, toutefois la propriété <em>Value </em>est typée <em>Object</em>. Ainsi, bien que <em>IsLoaded soit</em> de type boolean, c&#8217;est sa représentation sous forme de chaîne de caractère qui est comparée par appel implicite de la méthode <em>ToString()</em>. Cette méthodologie a pour avantage de laisser au designer le soin de déclencher les transitions simplement.</p>
<h3>2 &#8211; activer ou désactiver un comportement interactif</h3>
<p>Dans Silverlight 3, il n&#8217;était pas possible de lier une propriété de comportement, comme <em>IsEnabled </em>à une propriété de la Vue-Modèle. Même si cette dernière implémentait <em>INotifyPropertyChanged</em>, la propriété <em>IsEnabled </em>n&#8217;était pas &laquo;&nbsp;bindable&nbsp;&raquo; car les comportements n&#8217;héritaient pas de <em>FrameworkElement mais de DependencyObject</em>. Avec le nouveau systèmes c&#8217;est désormais chose possible. Placez deux instances du comportement GotoStateAction sur chacun des deux exemplaires de bouton. Lorsque la souris survolera l&#8217;un ou l&#8217;autre, nous naviguerons vers l&#8217;état visuel <em>RightButtonMouseOver </em>ou <em>LeftButtonMouseOver</em>. Lorsque la souris quittera le survol de l&#8217;objet, nous afficherons l&#8217;état <em>DefaultMouseLeave</em>. La figure ci-dessous Toutefois correspond au paramétrage du bouton de droite.</p>
<p><a href="http://www.tweened.org/wp-content/files/GotoStateBehavior.jpg" title="GotoStateBehavior" rel="lightbox[640]"><img class="aligncenter size-full wp-image-734" src="http://www.tweened.org/wp-content/files/GotoStateBehavior.jpg" alt="" width="281" height="440" /></a></p>
<p>Jusque-là nous n&#8217;utilisons pas le contexte de données de la Vue-Modèle mais nous allons y remédier. Dans le scénario de base développeur et designer sont partis du principe que l&#8217;affichage d&#8217;une pagination (par exemple : image 1/6) n&#8217;est pas toujours de mise. Ainsi, cette navigation ne sera possible que dans le cas ou l&#8217;affichage de la pagination est prévue par Vue-Modèle. C&#8217;est le cas lorsque la propriété <em>DisplayPageNumbers </em>(de <em>GalleryViewModel</em>)<em> </em>est à <em>true</em>. il suffit donc d&#8217;établir une liaison de données entre <em>IsEnabled </em>du comportement et <em>DisplayPageNumbers. Voici le code XAML correspondant :</em></p>
<p><em><a href="http://www.tweened.org/wp-content/files/BoutonNextPicture.jpg" title="BoutonNextPicture" rel="lightbox[640]"><img class="size-full wp-image-735 alignleft" src="http://www.tweened.org/wp-content/files/BoutonNextPicture.jpg" alt="" width="592" height="373" /></a></em></p>
<p>Le code est assez simple à comprendre :</p>
<ul>
<li>La visibilité du bouton est liée à RightArrowVisibility de <em>GalleryViewModel</em>.</li>
<li>Le texte, affiché via la propriété Content, est lié à la propriété <em>Paging </em>de <em>GalleryViewModel</em>.</li>
<li>Très important, toutes les instances héritant du type <em>ButtonBase </em>implémentent, depuis Silverlight 4, le commanding via la propriété <em>Command</em>. Celle-ci permet d&#8217;exécuter des commandes (des actions de ViewModel). L&#8217;événement Click provoque l&#8217;exécution de la commande. Pour tout autre type d&#8217;événements que <em>Click</em>, vous pouvez utiliser le comportement nommé <em>InvokeCommandAction</em>.</li>
<li>Pour finir, les comportements de navigation sont activés ou désactivés par la propriété <em>DisplayPageNumbers </em>de <em>GalleryViewModel</em>.</li>
</ul>
<h4>VI &#8211; le Diaporama côté Vue-Model</h4>
<p>Concernant Vue-Modèle, le développeur est sur des rails. Le code est standard et les étape sont toujours les mêmes :</p>
<ul>
<li>Il est assez pratique de créer une classe de base dont toutes les classes de type Vue-Modèle hériteront. Vous pouvez l&#8217;appeler <em>ViewModel </em>ou <em>ViewModelBase</em>.</li>
<li>Cette classe doit implémenter deux interfaces : INotifyPropertyChanged et IDataErrorInfo. INotifyPropertyChanged permet de notifier la vue de tout changement de propriété. Cela permet d&#8217;utiliser le mécanisme de créer des liaisons de données qui seront rafraichies lorsque les propriétés de Vue-Modèle seront mise à jour. IDataErrorInfo est une nouvelle interface fournie par Microsoft qui permet aux vues d&#8217;afficher les erreurs levées lors d&#8217;une mauvaise affectation. Concrètement, cela est particulièrement utile lors de liaisons de données à deux voies. Dans notre cas, l&#8217;intérêt est moindre car la vue n&#8217;a pas de raison de modifier les propriétés de Vue-Modèle. Dans le cas d&#8217;un formulaire IDataErrorInfo est obligatoire car bien plus pratique à utiliser qu&#8217;une levée d&#8217;exception (via l&#8217;instruction <em>Throw new Exception</em>). Je vous renvoie à l&#8217;<a href="http://johnpapa.net/silverlight/enabling-validation-in-silverlight-4-with-idataerrorinfo/" target="_blank">article de John Papa</a> concernant l&#8217;implémentation de <em>IDataErrorInfo</em>.</li>
<li>Il est nécessaire de créer des propriétés qui seront accessibles directement depuis la vue</li>
<li>Pour finir, nous devons créer des commandes qui seront exécutées depuis la Vue. L&#8217;implémentation des commandes est également couvert par un article de John Papa que vous trouverez <a href="http://johnpapa.net/silverlight/5-simple-steps-to-commanding-in-silverlight/" target="_blank">ici</a>. Concrètement, il propose de créer une classe abstraite nommée <em>DelegateCommand </em>qui facilitera l&#8217;instanciation de ces dernières dans Vue-Modèle. Normalement, une commande correspond à un type d&#8217;objet mais cela peut-être éviter grâce à la délégation.</li>
</ul>
<h3>1 &#8211; Les propriétés accessible au sein de la vue &laquo;&nbsp;Bindable&nbsp;&raquo;</h3>
<p>Pour qu&#8217;une propriété soit accessible depuis la vue, elle doit utiliser l&#8217;accesseur public. De plus, dans l&#8217;optique où celle-ci utilise le système de liaison classique, elle doit notifier la vue lorsque qu&#8217;elle est modifiée. Pour cela, il suffit d&#8217;utiliser la méthode <em>NotifyPropertyChanged </em>héritée de la classe <em>ViewModel</em>, implémentant <em>INotifyPropertyChanged</em>. Voici un exemple pour la propriété exemple</p>
<p><a href="http://www.tweened.org/wp-content/files/code6.jpg" title="code6" rel="lightbox[640]"><img class="alignleft size-full wp-image-741" src="http://www.tweened.org/wp-content/files/code6.jpg" alt="" width="424" height="437" /></a></p>
<h3>2 &#8211; les commandes</h3>
<p>Les commandes doivent toujours faire référence à une méthode ainsi qu&#8217;à une valeur booléenne qui indique si la commande doit-être exécutée. Voici le code C# correspondant aux commandes <em>DisplayNextPicture </em>et <em>DisplayPreviousPicture </em>:</p>
<p><a href="http://www.tweened.org/wp-content/files/code4.jpg" title="code4" rel="lightbox[640]"><img class="size-full wp-image-739 alignleft" src="http://www.tweened.org/wp-content/files/code4.jpg" alt="" width="673" height="617" /></a></p>
<p>Rien de bien compliqué, la propriété <em>Index </em>est affectée d&#8217;une nouvelle valeur, et notifie la vue de ce changement via le mécanisme héritée de <em>INotifyPropertyChanged</em>. La méthode <em>CanDisplayPictures </em>renvoie systématiquement <em>true </em>ce qui n&#8217;est pas l&#8217;idéal, vous pourrez faire certains tests à ce niveau. C&#8217;est ce que je fais pour la commande <em>LoadAllPicture </em>qui prend en deuxième paramètre de son constructeur le booléen renvoyé par <em>CanLoadAllPictures </em>:</p>
<p><a href="http://www.tweened.org/wp-content/files/code5.jpg" title="code5" rel="lightbox[640]"><img class="size-full wp-image-740 alignleft" src="http://www.tweened.org/wp-content/files/code5.jpg" alt="" width="398" height="184" /></a></p>
<h4>VII &#8211; l&#8217;application finale</h4>
<p>Elle est visible à cette adresse : <a href="http://www.tweened.org/wp-content/uploads/applis/diaporamaMVVM/" target="_blank">http://www.tweened.org/wp-content/uploads/applis/diaporamaMVVM/</a>.</p>
<p>Le projet ainsi que les sources complètes sont quant à eux téléchargeables ici : <a href="http://www.tweened.org/wp-content/uploads/applis/GalleryMVVM.zip">http://www.tweened.org/wp-content/uploads/applis/GalleryMVVM.zip</a>.</p>
<img src="http://feeds.feedburner.com/~r/flashxpress/~4/Lzb0gTtUau4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/conception-mvvm-l%e2%80%99exemple-du-diaporama/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.flashxpress.net/news/conception-mvvm-l%e2%80%99exemple-du-diaporama/</feedburner:origLink></item>
	</channel>
</rss>
