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

<channel>
	<title>Flashxpress</title>
	<atom:link href="http://www.flashxpress.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flashxpress.net</link>
	<description>Ressources pour la création et les technologies du web</description>
	<pubDate>Mon, 05 Jan 2009 17:32:52 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>L&#8217;architecture de Cocomo ( part 1 )</title>
		<link>http://www.flashxpress.net/ressources-flex/cocomo-architecture-1/</link>
		<comments>http://www.flashxpress.net/ressources-flex/cocomo-architecture-1/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 03:20:26 +0000</pubDate>
		<dc:creator>Erick Ghaumez</dc:creator>
		
		<category><![CDATA[Ressources Flex]]></category>

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

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

		<guid isPermaLink="false">http://www.flashxpress.net/?p=1956</guid>
		<description><![CDATA[Comme vous le savez maintenant  ( cf.Hello Cocomo ), l&#8217;objectif de Cocomo est de nous offrir, à nous les gentils développeurs Flex, un moyen simplifié d&#8217;intégrer des technologies de &#8220;collaboration en temps-réel&#8221; dans nos applications.
Nous l&#8217;avons vu dans l&#8217;exemple précédent, le principal composant d&#8217;une application Cocomo est le &#8220;gestionnaire de session&#8221; ( ConnectSession ou [...]]]></description>
			<content:encoded><![CDATA[<p>Comme vous le savez maintenant  ( cf.<a title="Développer avec Cocomo - Introduction" href="http://www.flashxpress.net/ressources-flex/developper-avec-cocomo-introduction/">Hello Cocomo</a> ), l&#8217;objectif de Cocomo est de nous offrir, à nous les gentils développeurs Flex, un moyen simplifié d&#8217;intégrer des technologies de &#8220;collaboration en temps-réel&#8221; dans nos applications.</p>
<p>Nous l&#8217;avons vu dans <a href="http://www.flashxpress.net/ressources-flex/hello-cocomo-premiere-application-multi-utilisateurs/">l&#8217;exemple précédent</a>, le principal composant d&#8217;une application Cocomo est le &#8220;gestionnaire de session&#8221; ( <strong>ConnectSession</strong> ou <strong>ConnectSessionContainer</strong> » implements IConnectionSession cf <a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/session/package-detail.html">Documentation</a> ). C&#8217;est lui qui permet à l&#8217;application de <strong>se connecter à un salon</strong> ( serveurs Cocomo/ConnectNow ), <strong>d&#8217;identifier les utilisateurs</strong>, et de &#8220;<strong>synchroniser des données en temps-réel</strong>&#8221; entre les différentes applications connectées.</p>
<p>Nous allons maintenant nous intéresser plus en détail à ces <strong>salons</strong> ( les &#8220;rooms&#8221;) et à leur fonctionnement.</p>
<p>Les salons Cocomo sont des <strong>&#8220;points de rencontre virtuels&#8221;</strong> à travers lesquels des applications clientes peuvent synchroniser des données,  échanger des flux audio/vidéo et partager des fichiers. Pour permettre cette synchronisation, <strong>les salons stockent les données et transmettent les mises à jour aux différents clients &#8220;abonnés&#8221;</strong>.</p>
<p>Les informations stockées et partagées peuvent être de différents types ( cf. <a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/sharedModel/package-detail.html">SharedModel</a> ), mais fonctionnent tous sur le principe de <strong>&#8220;modèle de donnée partagé&#8221;</strong>.</p>
<h3>Modèle partagé de donnée (  SharedModels )</h3>
<p>Un <strong>modèle partagé</strong> est une classe dont les données sont en quelque sorte <strong> &#8220;stockées à distance&#8221;</strong> ( ici dans un salon Cocomo ). Pour assurer que tous les clients seront bien synchronisés, les mises à jour du modèle <strong>ne sont pas directement effectuées côté client</strong>. Lorsqu&#8217;un client veut effectuer une modification sur modèle ( exemple : envoi d&#8217;un message sur le tchat ), la mise à jour est d&#8217;abord demandée au salon, côté serveur. Le client envoie en fait un <a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/messaging/MessageItem.html" target="_blank">message</a> contenant la modification voulue au salon, et c&#8217;est ce dernier qui transmet les nouvelles informations mises à jour à chaque client. De cette manière le nouveau message s&#8217;affichera ( quasiment ) en même temps chez l&#8217;émetteur et les destinataires du message. C&#8217;est ce mécanisme qui assure que les différents clients connectés partagent en permanence les mêmes données.</p>
<p><img class="aligncenter size-full wp-image-1967" title="cocomo_sharedmodele" src="http://www.flashxpress.net/wp-content/uploads/2008/12/cocomo_sharedmodele.jpg" alt="cocomo_sharedmodele" width="580" height="444" /></p>
<p>Cocomo ( les composants et les salons ) intégre un mécanisme de vérification des droits, par conséquent, lors de chaque &#8220;demande de modification&#8221;, le salon va vérifier si l&#8217;utilisateur à l&#8217;origine de la &#8220;publication&#8221; est autorisé à l&#8217;effectuer. Par défaut, les droits sont distribués &#8220;en cascade&#8221; pour chaque modèle en fonction du rôle de l&#8217;utilisateur dans le salon. La modification des modèles partagés et des droits n&#8217;est autorisée qu&#8217;au propriétaire du salon ( cf. <a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/messaging/UserRoles.html">UserRoles.OWNER</a> ).</p>
<p>Nous verrons prochainement qu&#8217;il est possible de créer ses propres modèles de données partagés, mais nous allons commencer par nous intéresser aux modèles &#8220;natifs&#8221; de Cocomo, ceux créés durant chaque session.</p>
<h3>SharedManagers</h3>
<p>Par défaut, les applications Cocomo gérent quatres &#8220;modèles de données partagés&#8221; de base, il s&#8217;agit en quelque sorte des informations minimales devant être synchronisées entre les clients pour permettre leur collaboration. Pour gérer ces modèles partagés &#8220;natifs&#8221;, un gestionnaire de session dispose de quatre classes <strong>&#8220;<a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/sharedManagers/package-detail.html" target="_blank">SharedManagers</a>&#8220;</strong>, chargées de se synchroniser avec les données &#8220;stockées&#8221; sur le serveur  :</p>
<ul>
<li> l&#8217;état du salon : <strong>RoomManager</strong></li>
<li>les utilisateurs connectés : <strong>UserManager</strong></li>
<li>les flux audio/video échangés : <strong>StreamManager</strong></li>
<li>les fichiers partagés dans le salon : <strong>FileManager</strong></li>
</ul>
<p>À l&#8217;ouverture d&#8217;une session sur un client ( connexion et identification réussie ),  le gestionnaire initialise et abonne ces quatre managers. Ces managers sont alors chargés d&#8217;échanger les données nécessaires avec le salon pour maintenir la synchronisation des différents clients.</p>
<p><img class="aligncenter size-full wp-image-1969" title="cocomo_subscribemanager" src="http://www.flashxpress.net/wp-content/uploads/2008/12/cocomo_subscribemanager.jpg" alt="cocomo_subscribemanager" width="579" height="478" /></p>
<p><img class="aligncenter size-full wp-image-1970" title="cocomo_sharedmanagers" src="http://www.flashxpress.net/wp-content/uploads/2008/12/cocomo_sharedmanagers.jpg" alt="cocomo_sharedmanagers" width="579" height="436" /></p>
<p>( les UserModel, FileModel&#8230; représentés dans le schéma n&#8217;existent pas &#8220;réellement&#8221; sous ces noms, mais cela permet de donner une idée du mécanisme global )</p>
<h3>RoomManager</h3>
<p>C&#8217;est la <a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/sharedManagers/RoomManager.html" target="_blank">classe</a> chargée de synchroniser et de gérer l&#8217;état du salon :</p>
<ul>
<li>nom du salon :  roomName</li>
<li>url du salon :  roomURL</li>
<li>bande passante : bandwidth</li>
<li>statut du salon ( session terminée, pas commencée, en pause &#8230; ) : roomState</li>
<li>rôle par défaut des nouveaux participants : autoPromote</li>
<li>entrée libre : guestHaveToKnock</li>
<li>&#8230;</li>
</ul>
<h3>UserManager</h3>
<p>Cette <a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/sharedManagers/UserManager.html" target="_blank" >classe</a> est chargée de synchroniser et de gérer la liste des utilisateurs connectés, ainsi que leur rôles / droits respectifs</p>
<ul>
<li> liste des utilisateurs connectés et liste par rôles ( owner, publisher, viewer ou lobby cf.UserRoles)</li>
<li> rôle, ID de l&#8217;utilsateur en cours</li>
</ul>
<h3>StreamManager</h3>
<p>Cette <a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/sharedManagers/StreamManager.html" target="_blank">classe</a> est chargée de la synchronisation et de la gestion des flux en cours d&#8217;émissions. Elle vous permettra par exemple de créer, de mettre en pause ou de stopper un flux.</p>
<h3>FileManager</h3>
<p>Cette <a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/sharedManagers/FileManager.html" target="_blank">classe</a> est chargée de la synchronisation et de la gestion des fichiers partagés dans le salon. Elle vous permettra par exemple d&#8217;envoyer un fichier, de suivre l&#8217;avancement de l&#8217;envoi, ou encore de lister les fichiers stockés.</p>
<h3>SharedManagers et gestion des droits</h3>
<p>Initialement, le rôle et les droits de chaque utilisateur découlent de son rôle au niveau du salon, mais il est à noter que <strong>chaque SharedManager permet de gérer les autorisations sur son modèle respectif </strong> ( SharedManager.<a href="http://livedocs.adobe.com/labs/acrobatcom/com/adobe/rtc/sharedManagers/FileManager.html#setUserRole()">setUserRole(&#8230;)</a> ). Vous pourrez ainsi définir, par exemple, que pour le partage de fichiers, l&#8217;utilisateur B aura le droit de publication, alors qu&#8217;il ne l&#8217;aura pas pour les autres modéles</p>
<h3>CocomoDevConsole</h3>
<p>Le SDK de Cocomo contient une application nommée CococomDevConsole. Il s&#8217;agit d&#8217;une application AIR permettant <strong>d&#8217;observer et de gérer en temps réel l&#8217;état de ses salons, et donc de ses modèles de données partagés</strong>.</p>
<p><img class="aligncenter size-full wp-image-1979" title="cocomo_dev_console_1" src="http://www.flashxpress.net/wp-content/uploads/2008/12/cocomo_dev_console_1.jpg" alt="cocomo_dev_console_1" width="580" height="317" /></p>
<p>Une fois connecté et entré dans un salon, dans l&#8217;onglet &#8220;Manage&#8221;, nous avons accès à :</p>
<ul>
<li>A. la configuration du salon</li>
<li>B. les utilisateurs connectés</li>
<li>C. les flux diffusés</li>
<li>D. les fichiers partagés</li>
</ul>
<p><img class="aligncenter size-full wp-image-1981" title="cocomo_dev_console_2" src="http://www.flashxpress.net/wp-content/uploads/2008/12/cocomo_dev_console_2.jpg" alt="cocomo_dev_console_2" width="580" height="310" /></p>
<p>Cette application peut s&#8217;avérer utile, mais nous allons voir qu&#8217;il est assez simple d&#8217;incorporer ces informations dans sa propre application.</p>
<h3>Utiliser les SharedManagers</h3>
<p>Voici un <a href="http://www.lafabrick.com/labz/cocomo_manager1" alt="Récupération de données sur les sharedManagers" target="_blank">exemple d&#8217;application</a> qui permet de voir comment récupérer ces informations directement sur les SharedManagers.</p>
<p>Voilà pour aujourd&#8217;hui&#8230;<br />
La prochaine fois nous verrons comment utiliser les sharedManagers pour créer de nouveaux composant, avant de voir finallement comment créer nos propres modèles de données partagées.</p>
<p>A l&#8217;année prochaine ;)&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-flex/cocomo-architecture-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Portes ouvertes CS4 chez Regart.net</title>
		<link>http://www.flashxpress.net/focus/1990/</link>
		<comments>http://www.flashxpress.net/focus/1990/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 21:48:52 +0000</pubDate>
		<dc:creator>Guylaine</dc:creator>
		
		<category><![CDATA[Evénements]]></category>

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

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

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

		<category><![CDATA[regart.net]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/?p=1990</guid>
		<description><![CDATA[Participez aux portes ouvertes Creative Suite 4,
le jeudi 8 janvier 2009

Le centre de formation REGART.NET vous invite à sa journée &#8220;Portes ouvertes Creative Suite 4&#8220;,
Vous assisterez à plusieurs ateliers et présentations par nos formateurs.
Entrée libre, sur inscription en ligne : http://regart.eventbrite.com
A cette occasion, Regart.net fêtera avec vous la sortie de la Creative suite Adobe 4 [...]]]></description>
			<content:encoded><![CDATA[<p>Participez aux portes ouvertes Creative Suite 4,</p>
<h2>le jeudi 8 janvier 2009</h2>
<p><img class="size-full wp-image-2003 alignleft" style="margin: 10px;" title="logo-regartnet-form" src="http://www.flashxpress.net/wp-content/uploads/2008/12/logo-regartnet-form.png" alt="logo-regartnet-form" width="163" height="82" /></p>
<p>Le centre de formation <a title="Regart.net formation" href="http://www.regart.net" target="_blank">REGART.NET</a> vous invite à sa journée &#8220;<strong>Portes ouvertes Creative Suite 4</strong>&#8220;,</p>
<p>Vous assisterez à plusieurs <em>ateliers </em>et <em>présentations </em>par nos formateurs.</p>
<p><strong>Entrée libre, sur inscription en ligne</strong> : <a href="http://regart.eventbrite.com" target="_blank">http://regart.eventbrite.com</a></p>
<p>A cette occasion, Regart.net fêtera avec vous la sortie de la Creative suite Adobe 4 ainsi que ses nouveaux locaux.  Avec la présence des Designers interactifs et d&#8217;Adobe France.</p>
<h2><strong>Au programme,</strong></h2>
<p>16h                        : Accueil.</p>
<p>16h30-17h30   : &#8220;Flash CS4, nouveautés AS3&#8243;, par Thibault Imbert.<br />
16h30-17h30   : &#8220;Flash CS4, nouveautés&#8221;, par Nicolas Gans.</p>
<p>17h30-18h30   : &#8220;Flex/AIR et les méthodes agiles&#8221;, par David Deraedt.</p>
<p>17h30-18h00   : &#8220;Dreamweaver CS4, nouveautés&#8221;, par Bertrand Gac.</p>
<p>18h00-18h30   : &#8220;Dreamweaver CS4, nouveautés&#8221;, par Bertrand Gac.</p>
<p>18h30-19h30   : &#8220;AIR &amp; Adobe Stratus&#8221;, par Vincent Maitray.</p>
<p>19h00-20h00   : &#8220;Flash CS4, nouveautés AS3&#8243;, par Thibault Imbert et Nicolas Gans.</p>
<p>19h30-20h15     : Présentation des Designers interactifs.<br />
19h30-20h15     : Contribution et Flashxpress.</p>
<p>20h                         : Pot d&#8217;au revoir et tirage au sort.</p>
<p><em><br />
</em></p>
<h2><em>Un tirage au sort aura lieu en fin de journée, l&#8217;un des participants gagnera une Creative suite 4 Web Premium !</em></h2>
<p><em><br />
</em></p>
<p><strong>Entrée libre, <a title="Portes ouvertes Regart.net" href="http://regart.eventbrite.com" target="_blank">sur inscription en ligne</a></strong></p>
<p><strong><br />
</strong></p>
<p>Le nombre de places étant limité, merci de vous désinscrire en cas de désistement, une liste d&#8217;attente étant mise en place</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/focus/1990/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hello Cocomo : première application multi-utilisateurs</title>
		<link>http://www.flashxpress.net/ressources-flex/hello-cocomo-premiere-application-multi-utilisateurs/</link>
		<comments>http://www.flashxpress.net/ressources-flex/hello-cocomo-premiere-application-multi-utilisateurs/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 13:54:08 +0000</pubDate>
		<dc:creator>Erick Ghaumez</dc:creator>
		
		<category><![CDATA[Ressources Flex]]></category>

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

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

		<guid isPermaLink="false">http://www.flashxpress.net/?p=1766</guid>
		<description><![CDATA[Dans ce 1er exemple d&#8217;application Cocomo, nous allons développer, à vrai dire &#8220;assembler&#8221;, une application de visioconférence intégrant un tchat, des notes partagées et un gestionnaire de partage de fichiers. Pour cela nous allons utiliser des pods, les composants de plus haut-niveau fournis dans Cocomo.
Pour commencer :

créer un nouveau Flex
copiez le fichier SWC de cocomo [...]]]></description>
			<content:encoded><![CDATA[<p>Dans ce 1er exemple d&#8217;application Cocomo, nous allons développer, à vrai dire &#8220;assembler&#8221;, une application de <strong>visioconférence</strong> intégrant un <strong>tchat, </strong>des<strong> notes partagées </strong>et un gestionnaire de <strong>partage de fichiers</strong>. Pour cela nous allons utiliser des <strong>pods</strong>, les composants de plus haut-niveau fournis dans Cocomo.</p>
<p>Pour commencer :</p>
<ul>
<li>créer un nouveau Flex</li>
<li>copiez le fichier SWC de cocomo ( <em>CocomoSDK_0.9/lib/player 9 ou 10/cocomo.swc</em> ) dans le dossier <em>/libs </em>de votre projet.</li>
</ul>
<h3>Hello Cocomo</h3>
<p>L&#8217;un des principaux composants d&#8217;une application Cocomo est le <strong>gestionnaire de session</strong>. C&#8217;est lui qui sera chargé de la communication avec les serveurs Cocomo, et donc de l&#8217;identification des utilisateurs, de la gestion de leur connexion, de la synchronisation des données&#8230; et plus encore&#8230;</p>
<p>Deux composants peuvent jouer ce rôle : <strong>ConnectSessionContainer</strong> et <strong>ConnectSession</strong> ( tous deux implémentent <em><strong>com.adobe.rtc.session.IConnectSession </strong></em>).</p>
<p style="center;"><img class="aligncenter" src="http://lafabrick.free.fr/blogImg/Cocomo_prez1-20081218-051847.jpg" alt="Cocomo ConnectSessionContainer" width="353" height="340" /></p>
<p>Commençons avec le <strong>ConnectSessionContainer :</strong></p>
<p>Il s&#8217;agit d&#8217;un composant basé sur la classe Canvas, et intégrant toute la &#8220;mécanique&#8221; nécessaire à la communication avec les serveurs Cocomo.</p>
<p>Il est à noter que le ConnectSessionContainer, et donc ses &#8220;composants-enfants&#8221;, resteront invisibles tant que la communication avec salon ne sera pas établie. C&#8217;est pour cette raison que nous allons lui intégrer nos <strong><em>pods ( WebCamera, SimpleChat, Notes et FileShare ).</em></strong>Tant que la connexion ne sera pas établie, aucuns des composants ne sera visible.</p>
<p>Pour débuter une session, nous devrons renseigner deux propriétés du <strong>container de session</strong> :</p>
<ul>
<li>l&#8217;adresse du salon: <strong>roomURL</strong> ( exemple : http://connectnow.acrobat.com/votreCompte/nomSalon )</li>
<li>les identifiants de connexion : <strong>authenticator</strong></li>
</ul>
<p>La transmission des identifiants se fait par l&#8217;intermédiaire de la classe <strong>AdobeHSAuthenticator</strong>.Elle a pour fonction d&#8217;encapsuler les informations relatives à l&#8217;identification( <strong>userName</strong>, <strong>password</strong> ). Plusieurs modes d&#8217;authentification sont possibles, nous nous y interresserons plus tard.</p>
<p>Dans un premier temps nous nous contenterons d&#8217;inscrire nos identifiants &#8220;en dur&#8221; dans notre application :</p>

<div class="wp_syntax"><div class="code"><pre class="mxml mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span> ?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span></span>
<span style="color: #000000;"> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span></span>
<span style="color: #000000;"> xmlns:rtc=<span style="color: #ff0000;">&quot;CocomoNameSpace&quot;</span></span>
<span style="color: #000000;"> <span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:ConnectSessionContainer</span> id=<span style="color: #ff0000;">&quot;sessionManager&quot;</span> width=<span style="color: #ff0000;">&quot;500&quot;</span> height=<span style="color: #ff0000;">&quot;400&quot;</span></span>
<span style="color: #000000;"> roomURL=<span style="color: #ff0000;">&quot;http://connectnow.acrobat.com/votreCompte/nomSalon&quot;</span> </span>
<span style="color: #000000;"> authenticator=<span style="color: #ff0000;">&quot;{identificator}&quot;</span></span>
<span style="color: #000000;"> backgroundColor=<span style="color: #ff0000;">&quot;#FFFFFF&quot;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:AdobeHSAuthenticator</span> id=<span style="color: #ff0000;">&quot;identificator&quot;</span></span>
<span style="color: #000000;"> userName=<span style="color: #ff0000;">&quot;votreLogin&quot;</span> password=<span style="color: #ff0000;">&quot;VotreMotDePasse&quot;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>À ce stade, l&#8217;application peut déjà se connecter. Par défaut, dès que le connectSessionContainer est créé, il tente d&#8217;initier la communication avec les serveurs. Dans cet exemple, j&#8217;ai ajouté une couleur de fond pour le container, de manière à pouvoir observer lorsque la connexion au salon est réussie.</p>
<p>Si vous publiez le projet en mode debug vous verrez les logs relatifs aux communications client/serveur.</p>
<p><img src="http://lafabrick.free.fr/blogImg/Flex_Builder-20081218-065625.jpg" alt="Logs Connexion Serveurs Cocomo" /></p>
<p>Pour vérifier si l&#8217;authentification est correcte, nous pouvons déclarer des écouteurs d&#8217;événements <strong>AuthenticationEvent.AUTHENTICATION_FAILURE </strong>et <strong>AuthenticationEvent.AUTHENTICATION_SUCCESS </strong>sur <strong>AdobeHSAuthenticator</strong>.</p>
<p>Pour capter le moment où notre application est connectée et synchronisée, nous pouvons ajouter un écouteur d&#8217;événement <strong>SessionEvent.SYNCHRONIZATION_CHANGE</strong> sur le container, et surveiller sa propriété &#8216;<strong>isSynchronized</strong>&#8216;. Nous reviendrons prochainement sur les différents aspects et acteurs en jeu lors de cette synchronisation.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span> ?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span></span>
<span style="color: #000000;">    xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span></span>
<span style="color: #000000;">    xmlns:rtc=<span style="color: #ff0000;">&quot;CocomoNameSpace&quot;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&gt;</span></span>
     <span style="color: #339933;">&lt;mx:Script&gt;</span>
<span style="color: #339933;">         &lt;![CDATA[</span>
<span style="color: #339933;">             import mx.controls.Alert;</span>
<span style="color: #339933;">             import com.adobe.rtc.events.SessionEvent;</span>
&nbsp;
<span style="color: #339933;">             // état de la session</span>
<span style="color: #339933;">             private var isConnected:Boolean = false;</span>
&nbsp;
<span style="color: #339933;">             // à chaque évenement de synchronisation de la session</span>
<span style="color: #339933;">             public function onSynchro( e:SessionEvent ):void</span>
<span style="color: #339933;">             {</span>
<span style="color: #339933;">                 if ( sessionManager.isSynchronized &amp;&amp; ! isConnected )</span>
<span style="color: #339933;">                 {</span>
<span style="color: #339933;">                     Alert.show(&quot;Application connectée&quot;);</span>
<span style="color: #339933;">                     isSessionOpen = true ;</span>
<span style="color: #339933;">                 }</span>
<span style="color: #339933;">             }</span>
<span style="color: #339933;">     ]]&gt;</span>
<span style="color: #339933;"> &lt;/mx:Script&gt;</span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:ConnectSessionContainer</span> id=<span style="color: #ff0000;">&quot;sessionManager&quot;</span></span>
<span style="color: #000000;">    width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;100%&quot;</span> backgroundColor=<span style="color: #ff0000;">&quot;#FFFFFF&quot;</span></span>
<span style="color: #000000;">    authenticator=<span style="color: #ff0000;">&quot;{identificator}&quot;</span> </span>
<span style="color: #000000;">    roomURL=<span style="color: #ff0000;">&quot;http://connectnow.acrobat.com/regartdemo/meetingzone&quot;</span></span>
<span style="color: #000000;">    synchronizationChange=<span style="color: #ff0000;">&quot;onSynchro( event )&quot;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- composant d'identification --&gt;</span></span>
 <span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:AdobeHSAuthenticator</span> id=<span style="color: #ff0000;">&quot;identificator&quot;</span></span>
<span style="color: #000000;">   userName=<span style="color: #ff0000;">&quot;votreLogin&quot;</span> password=<span style="color: #ff0000;">&quot;VotreMotDePasse&quot;</span></span>
<span style="color: #000000;">   authenticationSuccess=<span style="color: #ff0000;">&quot;Alert.show('identification réussie')&quot;</span></span>
<span style="color: #000000;">   authenticationFailure=<span style="color: #ff0000;">&quot;Alert.show('erreur d' identification')&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Maintenant que notre connexion parvient à se connecter au salon, nous allons pouvoir intégrer les pods.</p>
<h3>Utilisation des pods</h3>
<p>Les pods sont des composants collaboratifs &#8220;<strong>prêt à l&#8217;emploi</strong>&#8220;. Lorsque vous utilisez un <strong>ConnectSessionContainer</strong>, il suffit d&#8217;insérer vos pods à l&#8217;intérieur pour qu&#8217;ils puissent repérer la connexion établie et l&#8217;utiliser.</p>
<p>À ce jour, les pods disponibles sont :</p>
<ul>
<li><strong>SimpleChat</strong> : composant de &#8220;clavardage&#8221; permettant l&#8217;envoi de messages publics et privés</li>
<li><strong>WebCamera</strong> : composant de visioconférences</li>
<li><strong>FileShare</strong> : composant de partage de fichier ( upload / download )</li>
<li><strong>Note</strong> : composant de partage de notes</li>
<li><strong>Roster</strong> et <strong>HorizontalRoster</strong> : composant de gestion d&#8217;utilisateurs</li>
<li><strong>SharedWhiteBoard</strong> : tableau blanc partagé</li>
</ul>
<p>Nous allons maintenant insérer les pods souhaités :</p>

<div class="wp_syntax"><div class="code"><pre class="mxml mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:ConnectSessionContainer</span> id=<span style="color: #ff0000;">&quot;sessionManager&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;100%&quot;</span> backgroundColor=<span style="color: #ff0000;">&quot;#FFFFFF&quot;</span></span>
<span style="color: #000000;">   authenticator=<span style="color: #ff0000;">&quot;{identificator}&quot;</span></span>
<span style="color: #000000;">   roomURL=<span style="color: #ff0000;">&quot;http://connectnow.acrobat.com/votreCompte/nomSalon&quot;</span></span>
<span style="color: #000000;">   synchronizationChange=<span style="color: #ff0000;">&quot;onSynchro( event )&quot;</span></span>
<span style="color: #000000;">   <span style="color: #7400FF;">&gt;</span></span>
&nbsp;
   <span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- PODS --&gt;</span></span>
   <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:VBox</span> width=<span style="color: #ff0000;">&quot;50%&quot;</span> height=<span style="color: #ff0000;">&quot;100%&quot;</span> horizontalAlign=<span style="color: #ff0000;">&quot;center&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:WebCamera</span> id=<span style="color: #ff0000;">&quot;webcam&quot;</span> width=<span style="color: #ff0000;">&quot;300&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:SimpleChat</span> id=<span style="color: #ff0000;">&quot;chat&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;100%&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
   <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:VBox</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
   <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:VBox</span> width=<span style="color: #ff0000;">&quot;50%&quot;</span> height=<span style="color: #ff0000;">&quot;100%&quot;</span>  right=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
     <span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:FileShare</span> id=<span style="color: #ff0000;">&quot;fileManager&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50%&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:Note</span> id=<span style="color: #ff0000;">&quot;notes&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50%&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
   <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:VBox</span><span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/rtc:ConnectSessionContainer</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p><img src="http://lafabrick.free.fr/blogImg/hello_cocomo-20081218-081901.jpg" alt="Hello Cocomo" /></p>
<p>Les pods intégrent des mécanismes de gestion de droits. Nous y reviendrons &#8230;</p>
<p>Toujours est-il que voilà, vous avez créé votre première application Cocomo, ou devrais je dire votre première application de &#8220;communication en temps réelle&#8221;. Mais comment faisait-on avant ???&#8230;</p>
<h3>Identification et gestion de la connexion aux serveurs</h3>
<p>Bon il manque encore quelque chose peut être&#8230; Pour un seul utilisateur çà irait presque&#8230; mais c&#8217;est pas le but :s&#8230;Comment fera-t-on si un jour on trouve des amis et qu&#8217;on veut collaborer avec eux ??? Tout le monde va se connecter avec le compte &#8220;d&#8217;admin&#8221; ??? Et n&#8217;importe quel décompileur AS3 va pouvoir récupérer les identifiants ? Pas très sécure&#8230; Heureusement Cocomo nous permet de gérer facilement tout ces aspects.</p>
<p>Les serveurs Cocomo permettent plusieurs types d&#8217;identification, notamment une connexion en tant que <strong>hôte</strong>, basée sur le compte Cocomo Developper, et une connexion en tant <strong>qu&#8217;invité</strong>, ne nécessitant qu&#8217;un nom de participant.</p>
<p>Nous allons donc supprimer les attributs userName et password de l&#8217;AdobeHSAuthenticator, et ajouter un formulaire d&#8217;authentification à notre application. Ce formulaire permettra de choisir le type d&#8217;identification ( hôte ou invité ) :</p>

<div class="wp_syntax"><div class="code"><pre class="mxml mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Panel</span> id=<span style="color: #ff0000;">&quot;logPanel&quot;</span> <span style="color: #7400FF;">&gt;</span></span>
   <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Form</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:FormItem</span> label=<span style="color: #ff0000;">&quot;Identifiant&quot;</span><span style="color: #7400FF;">&gt;</span></span>
         <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextInput</span> id=<span style="color: #ff0000;">&quot;chp_login&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:FormItem</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:FormItem</span> label=<span style="color: #ff0000;">&quot;Se connecter en tant que :&quot;</span> direction=<span style="color: #ff0000;">&quot;horizontal&quot;</span> <span style="color: #7400FF;">&gt;</span></span>
&nbsp;
         <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RadioButtonGroup</span> id=<span style="color: #ff0000;">&quot;userRole&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
         <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RadioButton</span> id=<span style="color: #ff0000;">&quot;isGuest&quot;</span> groupName=<span style="color: #ff0000;">&quot;userRole&quot;</span></span>
<span style="color: #000000;">            label=<span style="color: #ff0000;">&quot;Invité&quot;</span> value=<span style="color: #ff0000;">&quot;{UserRoles.VIEWER}&quot;</span>  selected=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #000000;">         <span style="color: #7400FF;">/&gt;</span></span>
         <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RadioButton</span> id=<span style="color: #ff0000;">&quot;isOwner&quot;</span> groupName=<span style="color: #ff0000;">&quot;userRole&quot;</span></span>
<span style="color: #000000;">            label=<span style="color: #ff0000;">&quot;Hôte&quot;</span> value=<span style="color: #ff0000;">&quot;{UserRoles.OWNER}&quot;</span></span>
<span style="color: #000000;">         <span style="color: #7400FF;">/&gt;</span></span>
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:FormItem</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:FormItem</span> label=<span style="color: #ff0000;">&quot;Mot de passe&quot;</span>  enabled=<span style="color: #ff0000;">&quot;{ userRole.selectedValue == UserRoles.OWNER }&quot;</span><span style="color: #7400FF;">&gt;</span></span>
         <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextInput</span> id=<span style="color: #ff0000;">&quot;chp_password&quot;</span> displayAsPassword=<span style="color: #ff0000;">&quot;true&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:FormItem</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:FormItem</span> <span style="color: #7400FF;">&gt;</span></span>
         <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Entrer&quot;</span></span>
<span style="color: #000000;">            click=<span style="color: #ff0000;">&quot;login(chp_login.text , userRole.selectedValue == UserRoles.OWNER ? chp_password.text : null  )&quot;</span></span>
<span style="color: #000000;">          <span style="color: #7400FF;">/&gt;</span></span>
      <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:FormItem</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
   <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Form</span><span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Panel</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>La définition des <strong>rôles des utilisateurs</strong> est basée sur des valeurs numériques, définies dans des constantes de la classe <strong>UserRoles</strong>.</p>
<p>Les principaux rôles sont <strong>Owner</strong> ( hôte / propriétaire du salon ), <strong>Publisher</strong> ( participant autorisé à publier sur un ou plusieurs pods ) et <strong>Viewer</strong> ( invité seulement autorisé à utiliser le tchat ). Normallement, les invités ne peuvent utiliser un salon que si l&#8217;hôte est présent. Il est possible de modifier la configuration initiale des salons ( droit de publication automatique, persistence des données, entrée libre&#8230; ), ainsi que les rôles et les droits des utilisateurs connectés, pour cela nous pourrons utiliser l&#8217;application CocomoDevConsole ou l&#8217;API directement. Mais c&#8217;est déjà une autre histoire&#8230;</p>
<p>Pour le moment, nous allons permettre à l&#8217;utilisateur de s&#8217;identifier à l&#8217;aide du formulaire. Pour cela nous devons <strong>désactiver la connexion automatique du gestionnaire de session</strong> en déclarant sa propriété <strong>autoLogin=&#8221;false&#8221;</strong>.</p>
<p>Pour finir, nous allons ajouter une méthode <strong><em>login()</em></strong> qui sera chargée de renseigner le <strong><em>AdobeHSAuthenticator</em></strong>, et de lancer la connexion du gestionnaire de session :</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> login <span style="color: #66cc66;">&#40;</span> login:<span style="color: #0066CC;">String</span>, <span style="color: #0066CC;">password</span>:<span style="color: #0066CC;">String</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
   identificator.<span style="color: #006600;">userName</span> = login;
   <span style="color: #808080; font-style: italic;">// si le mot de passe est renseigné : connexion en tant que hôte ,</span>
   <span style="color: #808080; font-style: italic;">// sinon connexion en tant    qu'invité</span>
   identificator.<span style="color: #0066CC;">password</span> = <span style="color: #0066CC;">password</span> ;
   <span style="color: #808080; font-style: italic;">// lance la connexion du gestionnaire de session</span>
   sessionManager.<span style="color: #006600;">login</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Nous allons ensuite rajouter un bouton et une fonction de déconnexion.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// deconnexion</span>
<span style="color: #808080; font-style: italic;">// il semble qu'avec cette version (0.9), la plupart des pods, une fois déconnectés, ne peuvent être reconnectés.</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> logout<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
    sessionManager.<span style="color: #006600;">logout</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #808080; font-style: italic;">// close() est censé provoquer une déconnexion et la suppression de tous les noeuds enfants, mais ne semble pas encore marcher...</span>
    <span style="color: #808080; font-style: italic;">//sessionManager.close();</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="mxml mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:VBox</span> width=<span style="color: #ff0000;">&quot;50%&quot;</span> height=<span style="color: #ff0000;">&quot;100%&quot;</span> horizontalAlign=<span style="color: #ff0000;">&quot;center&quot;</span> right=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Déconnexion&quot;</span> click=<span style="color: #ff0000;">&quot;logout()&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:FileShare</span> id=<span style="color: #ff0000;">&quot;fileManager&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50%&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;rtc:Note</span> id=<span style="color: #ff0000;">&quot;notes&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50%&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:VBox</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Dès que l&#8217;application sera connectée, nous supprimerons le formulaire, et en cas de déconnexion le gestionnaire de session sera supprimé :</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// à chaque évenement de synchronisation de la session</span>
<span style="color: #808080; font-style: italic;">// connexion, deconnexion, changement d'état de salon, ...</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onSynchro<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>:SessionEvent <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #808080; font-style: italic;">// une fois que l'application parvient à se connecter / synchroniser</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> sessionManager.<span style="color: #006600;">isSynchronized</span> <span style="color: #66cc66;">&amp;&amp;</span> <span style="color: #66cc66;">!</span>isConnected <span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        Alert.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Application connectée&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
        isConnected = <span style="color: #000000; font-weight: bold;">true</span> ;
&nbsp;
        removeChild<span style="color: #66cc66;">&#40;</span> logPanel <span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">!</span> sessionManager.<span style="color: #006600;">isSynchronized</span> <span style="color: #66cc66;">&amp;&amp;</span> isConnected <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
    <span style="color: #808080; font-style: italic;">// si la connexion est perdue</span>
    isConnected = <span style="color: #000000; font-weight: bold;">false</span> ;
&nbsp;
   <span style="color: #808080; font-style: italic;">/* supprime le container de session
   *  » il semble que dans cette version certains pods une fois déconnectés n'arrivent pas à se reconnecter.
   *
   *  » Pour se reconnecter, il faudra donc :
   *     - soit forcer le rechargement de la page
   *     - recréer dynamiquement le gestionnaire de sessionet ses pods
   */</span>
   removeChild<span style="color: #66cc66;">&#40;</span> sessionManager <span style="color: #66cc66;">&#41;</span>;
&nbsp;
   <span style="color: #808080; font-style: italic;">// affichage d'un message de sortie de salon</span>
   Alert.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'vous avez quitté la réunion, recharger la page pour entrer à nouveau'</span><span style="color: #66cc66;">&#41;</span>;
   <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>La gestion des déconnexions / reconnexions semblent pour le moment un peu instables.</strong> Mais bon on est prévenu, c&#8217;est une béta. Après quelques tests, je crois que le meilleur moyen de revenir dans un salon après s&#8217;être déconnecté, est de recharger la page.</p>
<p>Accéder aux <a href="http://www.e-actif.com/lab/hello_cocomo">sources complétes</a></p>
<p>Voilà la fin de ce premier exemple d&#8217;utilisation de Cocomo, et il est bien entendu possible d&#8217;aller beaucoup plus loin. La prochaine fois nous nous intéresserons de plus près aux différents mécanismes articulés au sein de Cocomo, et plus globalement à l&#8217;architecture du service. Nous utiliserons également la <strong>CocomoDevConsole</strong> et le <strong>LocalConnectionServer</strong>, les deux outils AIR proposés dans le SDK.</p>
<p>D&#8217;ici là bonne collaboration !!! <img src='http://www.flashxpress.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-flex/hello-cocomo-premiere-application-multi-utilisateurs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Développer avec Cocomo - Introduction</title>
		<link>http://www.flashxpress.net/ressources-flex/developper-avec-cocomo-introduction/</link>
		<comments>http://www.flashxpress.net/ressources-flex/developper-avec-cocomo-introduction/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 13:49:04 +0000</pubDate>
		<dc:creator>Erick Ghaumez</dc:creator>
		
		<category><![CDATA[Ressources Flex]]></category>

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

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

		<guid isPermaLink="false">http://www.flashxpress.net/?p=1754</guid>
		<description><![CDATA[Cocomo ? Kezako ???
Cocomo est l&#8217;abréviation de &#8220;COmmon COllaboration MOdel&#8220;, c&#8217;est le nom donné par Adobe à son nouveau service en ligne dédié à la création d&#8217;applications collaboratives.
Cette appellation fait référence à la fois à:

un kit de développement incluant une librairie de composants Flex et des outils destinés à la création d&#8217;applications multi-utilisateurs. Pour info, [...]]]></description>
			<content:encoded><![CDATA[<h3>Cocomo ? Kezako ???</h3>
<p><strong>Cocomo</strong> est l&#8217;abréviation de &#8220;<strong>COmmon COllaboration MOdel</strong>&#8220;, c&#8217;est le nom donné par Adobe à son nouveau service en ligne dédié à la <strong>création d&#8217;applications collaboratives</strong>.</p>
<p>Cette appellation fait référence à la fois à:</p>
<ul>
<li>un <strong>kit de développement</strong> incluant une librairie de composants Flex et des outils destinés à la création d&#8217;applications multi-utilisateurs. Pour info, ces composants sont en partie ceux utilisés par Adobe pour développer ConnectNow, l&#8217;application de visio-conférence intégrée à la plateforme <a title="Plateforme collaborative Acrobat.com" href="http://www.acrobat.com" target="_blank">Acrobat.com</a>.</li>
<li>un <strong>service en ligne gratuit</strong> ( dans certaines limites ), permettant la création et le déploiement d&#8217;applications collaboratives basées sur des serveurs <a title="Flash Media Server sur adobe.fr" href="http://www.adobe.com/fr/products/flashmediaserver/" target="_blank">FMS</a> hébergés et maintenus par Adobe.</li>
</ul>
<p>En gros, Cocomo va nous permettre de créer des applications utilisant les fonctionnalités de communication en temps-réel de serveurs FMS, sans avoir à nous occuper de ces-dits serveurs&#8230; coooool !!!</p>
<p>Mais c&#8217;est quoi donc les &#8220;fonctionnalités de <strong>communication en temps-réels</strong> de ces serveurs FMS&#8221; ???</p>
<p>En fait, les serveurs Cocomo vont principalement nous permettre :</p>
<ul>
<li>d&#8217;<strong>échanger des flux audio et vidéo</strong>, cela nous permettra de développer des applications de visioconférence par exemple,</li>
<li>de <strong>synchroniser différents types de données entre plusieurs applications clientes</strong>, ce qui nous permettra par exemple de rajouter un tchat à une application existante ou de développer un système de co-navigation, de co-édition de documents ou encore des jeux multi-utilisateurs&#8230;</li>
<li>de <strong>partager des fichiers</strong></li>
<li>de <strong>gérer les droits des différents utilisateurs</strong> en fonction de leur rôle</li>
</ul>
<p style="center;"><img class="aligncenter" src="http://lafabrick.free.fr/blogImg/Cocomo-20081218-042251.jpg" alt="Clients et serveurs" width="590" height="458" /></p>
<p style="center;">La librairie contient des composants graphiques de &#8220;haut niveau&#8221;, les <strong>pods</strong>, mais également des classes de plus bas niveaux permettant le développement de ses propres composants ( <strong>SharedModel</strong>, <strong>CollectionNode</strong> ).</p>
<p><img src="http://lafabrick.free.fr/blogImg/Cocomo_Pods-20081218-015303.jpg" alt="" /></p>
<p>Les pods sont des <strong>composants collaboratifs &#8220;plug&#8217;n'play</strong>&#8220;, qui nous permettront de créer nos premières  applications sans, quasiment, avoir besoin d&#8217;écrire la moindre ligne de code ( Tchat, Webcam, Notes &#8230; ). Les classes de plus bas niveaux permettront ensuite de développer des composants plus adaptés à nos besoins.</p>
<p>Mais commençons par le début : un compte &#8216;<a title="Portail Cocomo Developper" href="https://cocomo.acrobat.com/" target="_blank">Cocomo Developper</a>&#8216;&#8230;</p>
<h3>Création d&#8217;un compte Cocomo Developper</h3>
<p>Pour créer un compte  :</p>
<ul>
<li>Rendez vous sur le <a title="Portail Développeur Cocom" href="https://cocomo.acrobat.com/" target="_blank">portail Cocomo ( https://cocomo.acrobat.com )</a>,</li>
<li>créez un <strong>nouveau compte</strong> ( vous pouvez aussi utiliser un compte Adobe existant )</li>
<li>Choisissez un <strong>identifiant de compte Cocomo</strong> ( &#8220;account name&#8221;, il sera utilisé comme base de l&#8217;URL d&#8217;accès aux salons )</li>
</ul>
<p><img src="http://lafabrick.free.fr/blogImg/cocomo_creation_compte-20081218-054838.jpg" alt="Création d'un compte Cocomo Developper" /></p>
<ul>
<li>Une fois le compte créé, notez l&#8217;<strong>URL de votre compte </strong>( &#8220;account URL&#8221; ).</li>
<li>Dans le panel &#8220;<strong>Room Instances</strong>&#8220;, créez un nouveau salon ( &#8220;<strong>room</strong>&#8221; ).</li>
</ul>
<p>Un salon représente une sorte de &#8220;point de rencontre virtuel&#8221;, à travers lequel <strong>plusieurs applications clientes pourront échanger des flux audio/vidéos, des fichiers ou des messages</strong>. Votre compte vous permettra de créer plusieurs salons, et chaque salon pourra avoir ses propres paramétrages. Chaque salon est identifié par une URL du type : <em>http://connectnow.acrobat.com/votreCompte/nomSalon </em></p>
<ul>
<li>Une fois le salon créé, télécharger le SDK.</li>
</ul>
<div>Dans le zip téléchargé, vous trouverez :</div>
<div>
<ul>
<li>de la <strong>documentation</strong></li>
<li>des <strong>exemples d&#8217;applications</strong></li>
<li>des utilitaires Air : <strong>CocomoDevConsole</strong> pour la gestion de ses comptes et de ses &#8220;salons&#8221; et  <strong>LocalServerConnection</strong>, une &#8220;émulation locale&#8221; de serveur Cocomo qui nous permettra de tester certaines fonctionalités de nos applications sans avoi à nous connecter aux serveurs Cocomo ( messaging essentiellement )</li>
<li>les <strong>sources</strong> de la librairie</li>
<li>les SWC de la librairie pour Flash Player 9 et pour Flash Player 10</li>
</ul>
</div>
<h3>Installation de Cocomo</h3>
<p>Pour cette version 0.9, l&#8217;installation va se réduire à l&#8217;ajout de la documentation de la librairie dans l&#8217;aide d&#8217;Eclipse. Pour cela :</p>
<ul>
<li>Créez un dossier &#8216;<em>com.adobe.cocomo</em>&#8216; dans le dossier &#8216;<em>plugins</em>&#8216; de votre installation de Flex Builder<br />
<strong>Windows</strong>: C:\Program Files\Adobe\Flex Builder 3\plugins\com.adobe.cocomo<br />
<strong>Macintosh</strong>: /Applications/Adobe Flex Builder 3/plugins/com.adobe.cocomo</li>
<li>Copiez le contenu de l&#8217;archive téléchargée à l&#8217;intérieur du nouveau dossier</li>
<li>( Re ) Démarrez Flex Builder et ouvrez l&#8217;aide ( Help / Help Contents ).</li>
</ul>
<div>Vous devriez maintenant trouver la doc de l&#8217;API de Cocomo.</div>
<div><img src="http://lafabrick.free.fr/blogImg/cocomo_help-20081218-031802.jpg" alt="Cocomo Documentation" /></div>
<div>And nooow &#8230;<a href="http://www.flashxpress.net/ressources-flex/hello-cocomo-premiere-application-multi-utilisateurs/">let&#8217;s collaborate </a>!!! <img src='http://www.flashxpress.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<p>» La suite : <a href="http://www.flashxpress.net/ressources-flex/hello-cocomo-premiere-application-multi-utilisateurs/">Ma première application Cocomo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-flex/developper-avec-cocomo-introduction/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jeux de Noël ! Gagnez des lots</title>
		<link>http://www.flashxpress.net/news/jeux-de-noel-gagnez-des-lots/</link>
		<comments>http://www.flashxpress.net/news/jeux-de-noel-gagnez-des-lots/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 12:24:13 +0000</pubDate>
		<dc:creator>Guylaine</dc:creator>
		
		<category><![CDATA[Evénements]]></category>

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

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

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

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

		<guid isPermaLink="false">http://www.flashxpress.net/?p=1730</guid>
		<description><![CDATA[
Trop la fête ! C&#8217;est parti !
Venez jouer avec nous, du mercredi 17 au lundi 05 janvier, avec 6 petits jeux à croquer pour peut-être gagner un des nombreux lots de Noël !
Pour cela guettez les posts de Maman Noël sur les forums !
Les lots :
- Des jeux Xbox (Age of Empires 3 et Shadow [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flashxpress.net/wp-content/uploads/2008/12/noel2.jpg"><img class="alignnone size-full wp-image-1746" title="noel2" src="http://www.flashxpress.net/wp-content/uploads/2008/12/noel2.jpg" alt="" width="353" height="265" /></a></p>
<p>Trop la fête ! C&#8217;est parti !</p>
<p>Venez jouer avec nous, du <span style="text-decoration: underline;">mercredi 17 au lundi 05 janvier</span>, avec 6 petits jeux à croquer pour peut-être gagner un des nombreux lots de Noël !</p>
<p>Pour cela guettez les posts de Maman Noël sur les <a href="http://www.flashxpress.net/forum/" target="_self">forums </a>!</p>
<p><em>Les lots :</em></p>
<p>- Des jeux Xbox (Age of Empires 3 et <span style="color: black;" lang="EN-US">Shadow Run) </span>et des webcams offertes par Microsoft ! Wow wow wow !<br />
- Une suite Web Premium, offerte par Adobe d’une valeur de 2 270 € ! Outcha !<br />
- Une suite Microsoft Expression Studio, offerte par Microsoft, d’une valeur de plus de 699 €.<br />
- Une formation &#8220;Illustrator&#8221; ou &#8220;PHP mySQL&#8221; chez <a href="http://www.regart.net/" target="_blank">Regart.net</a> (Adobe authorized Training Center),  d&#8217;une valeur de 1650 €. HT.<br />
- Une licence Flash Pro CS4, offerte par Adobe d’une valeur de  836 €.<br />
- Une licence Microsoft Expression Web 2 offertes par Microsoft, d’une valeur totale de 299 $.</p>
<p>Enjoy <img src='http://www.flashxpress.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/jeux-de-noel-gagnez-des-lots/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Les cours courts de Flashxpress, épisode 1</title>
		<link>http://www.flashxpress.net/ressources-silverlight-blend/les-cours-courts-de-flashxpress-episode-1/</link>
		<comments>http://www.flashxpress.net/ressources-silverlight-blend/les-cours-courts-de-flashxpress-episode-1/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 14:50:48 +0000</pubDate>
		<dc:creator>Eric Ambrosi</dc:creator>
		
		<category><![CDATA[Ressources Silverlight / Blend]]></category>

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

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

		<category><![CDATA[100%]]></category>

		<category><![CDATA[plein écran]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/?p=1561</guid>
		<description><![CDATA[Si la webtv ne s&#8217;ouvre pas automatiquement sur la vidéo, cliquez ici
Voici la 1ère série des &#8220;Cours courts de Flashxpress&#8221;, avec le premier numéro &#8220;Cours courts Silverlight&#8221; !
L&#8217;objectif est double : vous apprendrez à gérer le redimensionnement d&#8217;un site Silverlight à 100% puis à accéder au mode plein écran.
Pensez à mettre à jour votre lecteur [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1569" class="wp-caption alignnone" style="width: 320px"><a href="http://www.flashxpress.net/wp-content/uploads/2008/12/courscourt.jpg"><img class="size-medium wp-image-1569" title="Les cours courts de Flashxpress" src="http://www.flashxpress.net/wp-content/uploads/2008/12/courscourt.jpg" alt="Les cours courts de Flashxpress" width="310" height="150" /></a><p class="wp-caption-text">Les cours courts de Flashxpress</p></div>
<p><em><strong>Si la webtv ne s&#8217;ouvre pas automatiquement sur la vidéo, <a href="http://www.flashxpress.net/ressources-silverlight-blend/les-cours-courts-de-flashxpress-episode-1/?archiveId=51">cliquez ici</a></strong></em></p>
<p>Voici la 1ère série des &#8220;Cours courts de Flashxpress&#8221;, avec le premier numéro &#8220;Cours courts Silverlight&#8221; !</p>
<p>L&#8217;objectif est double : vous apprendrez à gérer le redimensionnement d&#8217;un site Silverlight à 100% puis à accéder au mode plein écran.</p>
<p><em>Pensez à mettre à jour votre lecteur Flash 10 pour voir convenablement les vidéos sur la nouvelle webtv de Flashxpress.</em></p>
<p><em><strong><a href="http://www.flashxpress.net/ressources-silverlight-blend/les-cours-courts-de-flashxpress-episode-1/?archiveId=51"></a></strong><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-silverlight-blend/les-cours-courts-de-flashxpress-episode-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sortie de processing 1.0</title>
		<link>http://www.flashxpress.net/news/sortie-de-processing-10/</link>
		<comments>http://www.flashxpress.net/news/sortie-de-processing-10/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 13:59:38 +0000</pubDate>
		<dc:creator>Nicolas Gans</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[art coding]]></category>

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

		<guid isPermaLink="false">http://www.flashxpress.net/?p=1546</guid>
		<description><![CDATA[Processing est un langage de programmation basé sur Java bien connu des art coders. Assez facile à appréhender pour des débutants ou des novices en programmation, il permet de créer rapidement et facilement des animations codées en 2D ou 3D ou des applications visuelles et interactives. On peut l&#8217;interfacer avec Arduino ou Wiring utilisés pour [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flashxpress.net/wp-content/uploads/2008/11/illus_news_sortie_processing_10.jpg"><img class="alignnone size-medium wp-image-1549" title="illus_news_sortie_processing_10" src="http://www.flashxpress.net/wp-content/uploads/2008/11/illus_news_sortie_processing_10.jpg" alt="" width="630" height="200" /></a><a href="http://processing.org/">Processing</a> est un langage de programmation basé sur Java bien connu des art coders. Assez facile à appréhender pour des débutants ou des novices en programmation, il permet de créer rapidement et facilement des animations codées en 2D ou 3D ou des applications visuelles et interactives. On peut l&#8217;interfacer avec <a title="arduino" href="http://www.arduino.cc/">Arduino</a> ou <a title="wiring" href="http://wiring.org.co/">Wiring</a> utilisés pour piloter des appareils électroniques. Après plusieurs années d&#8217;existence, la version 1.0 vient enfin de sortir, sans doute le moment opportun pour s&#8217;initier à ce fabuleux outil.</p>
<p>A cette occasion je vous renvoie au blog Jean-Noël Lafargue, artiste et enseignant qui vient de mettre en ligne <a title="cours d'initiation à processing" href="http://www.hyperbate.com/dernier/?cat=61" target="_blank">plusieurs cours d&#8217;initiation</a> à Processing.</p>
<p>Autre source d&#8217;informations et cours en ligne par <a href="http://www.abstractmachine.net/blog/">Douglas Edric Stanley</a> sur le site de l&#8217;école des Beaux-Arts d&#8217;Aix : <a href="http://www.ecole-art-aix.fr/rubrique81.html">http://www.ecole-art-aix.fr/rubrique81.html</a></p>
<p>Et bien sur <a href="http://processing.org/">le site de Processing</a>, avec beaucoup de ressources, cours et une communauté très active.</p>
<p>Et pour voir les travaux d&#8217;un maître du processing, allez jeter un oeil sur le site <a href="http://www.flight404.com/blog/" target="_blank">flight404</a> de <a href="http://processing.org/exhibition/features/hodgin/" target="_blank">Robert Hodgin</a>, ex-flasheur converti à la puissance de cet outil.</p>
<p>PS : <span style="text-decoration: line-through;">à l&#8217;heure où j&#8217;écris, il semblerait que <a href="http://www.hyperbate.com/dernier/?p=2607">cette version 1.0 présente des petits problèmes</a>.</span></p>
<p>PS2 : la version 1.01 régle les problèmes. Merci à Gino pour l&#8217;info</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/sortie-de-processing-10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Avalanche de nouveautés chez Adobe</title>
		<link>http://www.flashxpress.net/news/avalanche-de-nouveautes-chez-adobe/</link>
		<comments>http://www.flashxpress.net/news/avalanche-de-nouveautes-chez-adobe/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 15:57:57 +0000</pubDate>
		<dc:creator>Nicolas Gans</dc:creator>
		
		<category><![CDATA[News]]></category>

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

		<guid isPermaLink="false">http://www.flashxpress.net/?p=1185</guid>
		<description><![CDATA[
Flash Catalyst, Gumbo, Alchemy, Durango, Pixel Bender, Cocomo, Stratus, Genesis&#8230; Si ces noms ne vous disent rien, je vous conseille de lire l&#8217;article suivant chez silicon.fr afin d&#8217;en savoir plus sur ce que nous réserve la firme de San Jose pour les prochains mois.
A suivre très bientôt sur fxp à l&#8217;occasion du MAX à Milan.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flashxpress.net/wp-content/uploads/2008/11/illus_catalyst.jpg"><img class="alignnone size-medium wp-image-1188" title="illus_catalyst" src="http://www.flashxpress.net/wp-content/uploads/2008/11/illus_catalyst.jpg" alt="" width="630" height="150" /></a><a href="http://labs.adobe.com/technologies/flashcatalyst/" target="_blank"></a></p>
<p><a href="http://labs.adobe.com/technologies/flashcatalyst/" target="_blank">Flash Catalyst</a>, <a href="http://labs.adobe.com/technologies/gumbo/" target="_blank">Gumbo</a>, <a href="http://labs.adobe.com/technologies/alchemy/" target="_blank">Alchemy</a>, <a href="http://labs.adobe.com/technologies/durango/" target="_blank">Durango</a>, <a href="http://labs.adobe.com/technologies/pixelbender/" target="_blank">Pixel Bender</a>, <a href="http://labs.adobe.com/technologies/cocomo/" target="_blank">Cocomo</a>, <a href="http://labs.adobe.com/wiki/index.php/Stratus" target="_blank">Stratus</a>, <a href="http://labs.adobe.com/wiki/index.php/Genesis" target="_blank">Genesis</a>&#8230; Si ces noms ne vous disent rien, je vous conseille de lire <a title="AIR, Flash et Flex : festival d’annonces chez Adobe" href="http://www.silicon.fr/fr/news/2008/11/20/air__flash_et_flex___festival_d_annonces_chez_adobe" target="_blank">l&#8217;article suivant</a> chez silicon.fr afin d&#8217;en savoir plus sur ce que nous réserve la firme de San Jose pour les prochains mois.<br />
A suivre très bientôt sur fxp à l&#8217;occasion du <a href="http://max.adobe.com/" target="_blank">MAX à Milan</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/avalanche-de-nouveautes-chez-adobe/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bases du modèle événementiel d&#8217;AS1 à C#</title>
		<link>http://www.flashxpress.net/ressources-flash/bases-du-modele-evenementiel-das1-a-c/</link>
		<comments>http://www.flashxpress.net/ressources-flash/bases-du-modele-evenementiel-das1-a-c/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 08:18:14 +0000</pubDate>
		<dc:creator>Eric Ambrosi</dc:creator>
		
		<category><![CDATA[Flash ActionScript]]></category>

		<category><![CDATA[Ressources Flash]]></category>

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

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

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

		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/ressources-flash/divers-evenements-dynamiques/</guid>
		<description><![CDATA[Introduction
Le modèle événementiel a beaucoup évolué entre l&#8217;ActionScript 1 et 3 voici plusieurs exemples de code dans ces différents langages, nous expliquerons par la suite quels sont les différences, les principes et pour finir juste pour notre culture G, je parlerai un peu du modèle événementiel en C# 3.  
1. AS1 &#38; AS2 : [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>
<p>Le modèle événementiel a beaucoup évolué entre l&#8217;ActionScript 1 et 3 voici plusieurs exemples de code dans ces différents langages, nous expliquerons par la suite quels sont les différences, les principes et pour finir juste pour notre culture G, je parlerai un peu du modèle événementiel en C# 3.  <strong></strong></p>
<h3><strong>1. AS1 &amp; AS2 : </strong></h3>
<ol>
<li>Au tout départ de Flash en <a href="http://www.dailymotion.com/video/xmciz_patrick-hernandez-born-to-be-alive_music" target="_blank">1978 donc&#8230; à l&#8217;époque de &#8220;Born to be Alive(Patrick Hernandez)&#8221;</a>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="267" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.dailymotion.com/swf/k6JUQAHntrvAPZ4nfd&amp;colors=background:000000;foreground:D1D1D1;special:8C8C8C;&amp;related=0&amp;canvas=small" /><embed type="application/x-shockwave-flash" width="320" height="267" src="http://www.dailymotion.com/swf/k6JUQAHntrvAPZ4nfd&amp;colors=background:000000;foreground:D1D1D1;special:8C8C8C;&amp;related=0&amp;canvas=small" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<strong><a href="http://www.dailymotion.com/video/xmciz_patrick-hernandez-born-to-be-alive_music"><br />
</a></strong><em><a href="http://www.dailymotion.com/djoik"></a></em></div>
<p>, on écrivait des événements dit statiques, c&#8217;est à dire qu&#8217;on déposait le code suivant sur des occurences(exemplaires) boutons :</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #0066CC;">on</span><span style="color: #66cc66;">&#40;</span>release<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
 <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;waaaaa ça fonctionne&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Puis avec l&#8217;arrivée de Flash MX, nous avons eu l&#8217;immense joie d&#8217;accueillir les événements dynamiques qui ont apporté avec eux la notion de modèle événementiel. Le code dans ce cas est positionné directement sur la première image de la scène. Les évènements dynamiques permettent donc :</li>
</ol>
<ul>
<li>-à tout moment de modifier la façon dont réagit un objet à un évènement.</li>
</ul>
<ul>
<li> -de contrôler le comportement de n&#8217;importe quel objet depuis le scénario principal, sans avoir à éditer ces objets ou à vous plonger dans une arborescence complexe. Tout le code peut donc se retrouver au même endroit, ce qui facilite grandement le déboguage, la maintenance, la mise-à-jour et le travail en équipe.</li>
</ul>
<p>Pour faire réagir un objet à un évènement, il faudra définir une fonction dite &#8220;anonyme&#8221; à exécuter quand l&#8217;évènement en question <strong>sera diffusé</strong>, et <strong>affecter</strong> cette fonction à un gestionnaire d&#8217;évènement.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// le gestionnaire d'événement &lt;strong&gt;onMouseDown &lt;/strong&gt;de &lt;strong&gt;monClip &lt;/strong&gt;</span>
<span style="color: #808080; font-style: italic;">// qui signifie &quot;Souris Appuyée&quot;.</span>
<span style="color: #808080; font-style: italic;">// est affecté (avec l'opérateur &quot;=&quot;) d'une fonction anonyme</span>
<span style="color: #808080; font-style: italic;">// on définit, entre les accolades de la fonction, les instructions</span>
monClip.<span style="color: #0066CC;">onMouseDown</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">trace</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;souris enfoncée!&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>En ActionScript 1 et 2, nous n&#8217;avons pas réellement à faire  à un modèle événementiel car l&#8217;idée était à la base de simplifier le code pour les non-développeurs.</p>
<h4><strong>Mise en Application</strong></h4>
<p>Maintenant que nous venons de voir les bases, puisqu&#8217;un exemple s&#8217;avère toujours plus efficace que 10 pages de théorie, je vous propose d&#8217;étudier la réalisation d&#8217;une mini-application de dessin, qui illustre très bien cette notion d&#8217;évènements dynamiques.</p>
<p align="center"><object type="application/x-shockwave-flash" width="630" height="480">
<param name="movie" value="http://www.flashxpress.net/wp-content/uploads/2008/11/evenement_fxp_2008.swf" />
<embed type="application/x-shockwave-flash" width="630" height="480" src="http://www.flashxpress.net/wp-content/uploads/2008/11/evenement_fxp_2008.swf" >
</object>
</p>
<p align="center">
<p>Que se passe-t&#8217;il dans cette application en termes d&#8217;évènements?</p>
<p><strong>Quand la souris est appuyée -&gt; Quand      elle se déplace -&gt; on dessine.<br />
Quand la souris est relâchée -&gt; Quand      elle se déplace -&gt; on ne fait rien.</strong></p>
<p>Autrement dit, quand on relâche le bouton de la souris, il  faut arrêter de dessiner, c&#8217;est-à-dire <strong>annuler</strong> l&#8217;action qui a lieu sur  le déplacement de la souris.<br />
On a bien une notion d&#8217;évènement dynamique, puisque pour un même évènement (Souris Déplacée) on va avoir 2 comportements bien différents (dessiner ou ne rien faire).</p>
<h4><strong>Comment cela se traduit en ActionScript 1 ou 2</strong></h4>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// 1. Mise en place</span>
<span style="color: #808080; font-style: italic;">// Création d'un clip &quot;toile_mc&quot; sur la scène</span>
&nbsp;
<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;toile_mc&quot;</span>,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// 2. Événements de la scène:</span>
<span style="color: #808080; font-style: italic;">// ------------------------</span>
<span style="color: #808080; font-style: italic;">// Quand on appuie sur la souris, il faut:</span>
<span style="color: #808080; font-style: italic;">// * déplacer la mine du crayon virtuel sur toile_mc là où se trouve la souris (moveTo())</span>
<span style="color: #808080; font-style: italic;">// * définir le style du trait (épaisseur,couleur,alpha) (lineStyle())</span>
<span style="color: #808080; font-style: italic;">// * définir une fonction pour dessiner quand on déplace la souris (onMouseMove    = fonction) </span>
&nbsp;
<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">onMouseDown</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">//on déplace la mine du crayon virtuel</span>
toile_mc.<span style="color: #0066CC;">moveTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">_xmouse</span>,<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">_ymouse</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">//on demande tracer une ligne vers les nouvelles coordonées</span>
toile_mc.<span style="color: #0066CC;">lineStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5</span>,0xFF3333,<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">onMouseMove</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
toile_mc.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">_xmouse</span>,<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">_ymouse</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0066CC;">updateAfterEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">//la fonction globale updateAfterEvent() permet de raffraichir le visuel</span>
<span style="color: #808080; font-style: italic;">//sans tenir compte de la cadence, util uniquement pour setInterval et onMouseMove</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// Quand on relâche la souris, il faut:</span>
<span style="color: #808080; font-style: italic;">// annuler la fonction anonyme qui s'exécutait quand la souris était déplacée:</span>
<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">onMouseUp</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">//this.onMouseMove = null;</span>
<span style="color: #808080; font-style: italic;">//une meilleure écriture serait la suivante avec le mot clef delete</span>
<span style="color: #0066CC;">delete</span> <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">onMouseMove</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<h3><strong>2. Principe du modèle événementiel AS3, javascript ou C# </strong></h3>
<p>Un nouveau modèle événementiel voit le jour en AS3, cependant ce modèle existait depuis longtemps en javascript, c# ou dans d&#8217;autres langages, Flash n&#8217;invente rien mais adapte les modèles existants à un contexte orienté visuel ce qui n&#8217;est pas plus mal.</p>
<p>Dans un modèle évenementiel évolué il existe 3 composants :</p>
<p><strong> -le diffuseur de l&#8217;événement<br />
-l&#8217;écouteur de l&#8217;événement<br />
-l&#8217;événement lui-même</strong></p>
<p>Voici un exemple de la vie courante qui illustre ce modèle :</p>
<p>* Vous décidez de prendre un abonnement à un site Web d’annonces immobilières, le fait de vous abonner fait de vous un écouteur.</p>
<p>* En effet, à chaque nouvelle annonce, vous recevrez un email d’information concernant le bien immobilier. Vous écoutez le site Web qui agit en tant que diffuseur de l’évènement « nouvelle annonce mise en ligne ».</p>
<p>* A chaque nouvelle annonce reçue vous décidez ou non de visiter le bien. Ce qui correspond bien à une action en retour.</p>
<p>* Souvent oubliée cette phase est pourtant très importante : lorsque vous avez trouvé le bien le plus approprié vous décidez d’arrêter la souscription à ce site, dès lors vous ne recevrez plus d’email. Autrement dit vous supprimez l’écouteur <img src='http://www.flashxpress.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Le grand avantage de ce modèle est que nous pouvons souscrire plusieurs écouteurs, en effet dans la vie de tous les jours des millions d&#8217;événements &#8220;nouvelle annonce immobilière&#8221; sont diffusés par des milliers d&#8217;agences et ces événements sont écoutés par des millions de particuliers. Chaque particulier peut réagir différemment lorsqu&#8217;une annonce est diffusée.</p>
<h3><strong>3. L&#8217;écriture en AS3</strong></h3>
<p>Dès lors voici comment s&#8217;écrit l&#8217;écoute du clique d&#8217;un bouton:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3 actionscript3" style="font-family:monospace;">diffuseur.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;evenement&quot;</span>, ecouteur<span style="color: #000000;">&#41;</span>;
monBouton.<span style="color: #004993;">addEventListener</span> <span style="color: #000000;">&#40;</span> <span style="color: #990000;">&quot;click&quot;</span>, clicBouton <span style="color: #000000;">&#41;</span>;
<span style="color: #339966; font-weight: bold;">function</span> clicBouton <span style="color: #000000;">&#40;</span> pEvt<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span> <span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #009900;">// affiche : événement diffusé</span>
<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;événement diffusé&quot;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>;</pre></div></div>

<p>Cependant la chaine de caractère &#8220;click&#8221; n&#8217;est pas très ergonomique pour un développeur, car il faudra retenir la casse de l&#8217;événement par coeur, nous utiliserons plutôt la classe MouseEvent qui stocke des propriétés statiques. Grâce à L&#8217;IntelliSense, plus besoin de se souvenir par coeur des noms des événements :</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3 actionscript3" style="font-family:monospace;">diffuseur.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;evenement&quot;</span>, ecouteur<span style="color: #000000;">&#41;</span>;
monBouton.<span style="color: #004993;">addEventListener</span> <span style="color: #000000;">&#40;</span> <span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>, clicBouton <span style="color: #000000;">&#41;</span>;
<span style="color: #339966; font-weight: bold;">function</span> clicBouton <span style="color: #000000;">&#40;</span> pEvt<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span> <span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #009900;">// affiche : événement diffusé</span>
<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;événement diffusé&quot;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
;</pre></div></div>

<h3><strong><strong>4. L&#8217;écriture en C#</strong></strong></h3>
<p>je ne m&#8217;étendrai pas, mais sachez qu&#8217;en C# on récupère une référence faible du diffuseur via le sender, et que les propriétés propres à l&#8217;événement sont contenues sans RoutedEventArgs. Pour récupérer le container d&#8217;un objet diffuseur, il faudra cibler la propriété OriginalSource de l&#8217;objet événement reçu. Pour finir,  il suffit juste d&#8217;admirer la plus belle écriture qui soit, pour les amateurs, créer des événements personnalisés en c# est tellement simple que l&#8217;AS3 passe pour du lingo <img src='http://www.flashxpress.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp csharp" style="font-family:monospace;">bouton1.<span style="color: #0000FF;">Click</span> <span style="color: #008000;">+=</span> clicBouton;
<span style="color: #008080; font-style: italic;">//ou encore</span>
bouton2.<span style="color: #0000FF;">Click</span> <span style="color: #008000;">+=</span> <span style="color: #008000;">new</span> RoutedEventArgs<span style="color: #000000;">&#40;</span>clicBouton<span style="color: #000000;">&#41;</span>; 
&nbsp;
<span style="color: #0600FF;">void</span> clicBouton <span style="color: #000000;">&#40;</span> <span style="color: #FF0000;">object</span> sender, RoutedEventArgs e<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">// affiche : événement diffusé</span>
<span style="color: #000000;">System.<span style="color: #0000FF;">Diagnostics</span></span>.<span style="color: #0000FF;">Debug</span>.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;nom du diffuseur :: {0}&quot;</span>,<span style="color: #000000;">&#40;</span>sender <span style="color: #0600FF;">as</span> Button<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">name</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>;</pre></div></div>

<p>Pour finir, je vous conseille vivement la lecture des chapitres liés au modèle événementiel du livre de Thibault Imbert que vous trouverez <a href="http://www.flashxpress.net/ressources-flash/pratique-de-lactionscript-3-chapitre-1-2-et-3/" target="_blank">ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-flash/bases-du-modele-evenementiel-das1-a-c/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Workshop - Personnaliser un thème sous Wordpress</title>
		<link>http://www.flashxpress.net/news/workshop-personnaliser-un-theme-sous-wordpress/</link>
		<comments>http://www.flashxpress.net/news/workshop-personnaliser-un-theme-sous-wordpress/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 19:15:37 +0000</pubDate>
		<dc:creator>Nicolas Gans</dc:creator>
		
		<category><![CDATA[Evénements]]></category>

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

		<category><![CDATA[designers interactifs]]></category>

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

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

		<guid isPermaLink="false">http://www.flashxpress.net/?p=1172</guid>
		<description><![CDATA[Nicolas Gans (Regart.net) et Guillaume Brachon (Designers interactifs) animeront un workshop le jeudi 27 novembre prochain sur le système de gestion de contenu Wordpress. Intitulé “Personnaliser un thème sous Wordpress”.
Ce partage d’expérience permettra aux professionnels qui souhaitent développer un site ou un blog de comprendre les fondamentaux pour la gestion d’un thème. Nicolas et Guillaume montreront les [...]]]></description>
			<content:encoded><![CDATA[<p>Nicolas Gans (Regart.net) et Guillaume Brachon (Designers interactifs) animeront un workshop le <strong>jeudi 27 novembre prochain</strong> sur le système de gestion de contenu Wordpress. Intitulé “<strong>Personnaliser un thème sous Wordpress</strong>”.</p>
<p>Ce partage d’expérience permettra aux professionnels qui souhaitent développer un site ou un blog de comprendre les fondamentaux pour la gestion d’un thème. Nicolas et Guillaume montreront les coulisses techniques de la refonte de 2 sites développés sous WordPress : <strong><a href="http://www.designersinteractifs.org/">designersinteractifs.org</a></strong> et <strong><a href="../">flashxpress.net</a></strong>.</p>
<p>Agenda : le jeudi 27 novembre 2008<br />
Lieu : Café Dune, Paris 10e<br />
Durée : de 20h à 22h<br />
Gratuit</p>
<p><em>Le workshop s’articulera en 2 parties :</em></p>
<ul>
<li>présentation des 2 approches de développement (d’un template acheté VS partir de zéro)</li>
<li>description du contexte et justification des choix techniques</li>
<li>présentation des grandes phases de conception et de développement.</li>
</ul>
<ul>
<li> focus sur des points de développement précis</li>
<li>séance de questions/réponses</li>
</ul>
<p><a href="http://www.designersinteractifs.org/fr/evenements/evenements-workshops/personnaliser-un-theme-sous-wordpress/" target="_blank">Inscription sur le site des designers interactifs </a></p>
<p><strong><span style="text-decoration: underline;">Edit 28 nov. 2008</span></strong> : voici les slides du workshop en SlideShare (ci-dessous) et <a href="http://www.designersinteractifs.org/fr/wp-content/themes/di01/ressources/pdf/DI-workshop-wordpress-20081127.pdf" target="_blank">en pdf ici</a></p>
<div id="__ss_797050" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Personnaliser un thème sous Wordpress" href="http://www.slideshare.net/designersinteractifs/personnaliser-un-thme-sous-wordpress-presentation?type=powerpoint">Personnaliser un thème sous Wordpress</a><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=diworkshopwordpress20081127-1227870328010287-8&amp;stripped_title=personnaliser-un-thme-sous-wordpress-presentation" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=diworkshopwordpress20081127-1227870328010287-8&amp;stripped_title=personnaliser-un-thme-sous-wordpress-presentation" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View SlideShare <a style="text-decoration:underline;" title="View Personnaliser un thème sous Wordpress on SlideShare" href="http://www.slideshare.net/designersinteractifs/personnaliser-un-thme-sous-wordpress-presentation?type=powerpoint">presentation</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/wordpress">wordpress</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/workshop">workshop</a>)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/news/workshop-personnaliser-un-theme-sous-wordpress/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
