<?xml version="1.0" encoding="ISO-8859-1" ?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://www.aggelos.org/index.php">
  <title>Aggelos - Developpement</title>
  <description><![CDATA[]]></description>
  <link>http://www.aggelos.org/index.php</link>
  <dc:language>fr</dc:language>
  <dc:creator></dc:creator>
  <dc:rights></dc:rights>
  <dc:date>2007-04-26T15:12:27+02:00</dc:date>
  <admin:generatorAgent rdf:resource="http://www.dotclear.net/" />
  
  <sy:updatePeriod>daily</sy:updatePeriod>
  <sy:updateFrequency>1</sy:updateFrequency>
  <sy:updateBase>2007-04-26T15:12:27+02:00</sy:updateBase>
  
  <items>
  <rdf:Seq>
    <rdf:li rdf:resource="http://www.aggelos.org/index.php?2007/04/26/76-an-analysis-of-adobe-s-decision-to-open-source-the-flex-sdk-part-1-creating-flash-content-for-free" />
  <rdf:li rdf:resource="http://www.aggelos.org/index.php?2006/08/07/75-pic-nic-flash-in-paris-premiere-edition" />
  <rdf:li rdf:resource="http://www.aggelos.org/index.php?2006/06/12/74-fermeture-des-commentaires-avant-fermeture-definitive" />
  <rdf:li rdf:resource="http://www.aggelos.org/index.php?2006/04/29/73-pourquoi-flex2-sera-le-premier-pas-vers-linux" />
  <rdf:li rdf:resource="http://www.aggelos.org/index.php?2006/02/09/72-actus-sur-la-fusion" />
  <rdf:li rdf:resource="http://www.aggelos.org/index.php?2006/02/01/71-w00t" />
  <rdf:li rdf:resource="http://www.aggelos.org/index.php?2006/01/16/70--sexier-new-build-agglibtools-beta" />
  <rdf:li rdf:resource="http://www.aggelos.org/index.php?2006/01/05/69--captivate-les-cheat-codes-p" />
  <rdf:li rdf:resource="http://www.aggelos.org/index.php?2006/01/03/68--sexier-premier-update" />
  <rdf:li rdf:resource="http://www.aggelos.org/index.php?2006/01/03/67--sexier-le-daveloppement-flash-va-devenir-chaud" />
  </rdf:Seq>
  </items>
</channel>

<item rdf:about="http://www.aggelos.org/index.php?2007/04/26/76-an-analysis-of-adobe-s-decision-to-open-source-the-flex-sdk-part-1-creating-flash-content-for-free">
  <title>An analysis of Adobe's decision to open source the Flex SDK - Part 1 - Creating flash content for free</title>
  <link>http://www.aggelos.org/index.php?2007/04/26/76-an-analysis-of-adobe-s-decision-to-open-source-the-flex-sdk-part-1-creating-flash-content-for-free</link>
  <dc:date>2007-04-26T15:12:27+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>General</dc:subject>
  <description>It's the great event of the day for our community. Adobe decided to open source the Flex SDK. Great.

Technically speaking, the SDK is (as is mtasc) a set of tools to create, from a set of assets (for example your source MXML or AS3 code) a group of binary objects in a still closed format (swf)....</description>
  <content:encoded><![CDATA[ <p>It's the great event of the day for our community. Adobe decided to open source the Flex SDK. Great.<br />
<br />
Technically speaking, the SDK is (as is mtasc) a set of tools to create, from a set of assets (for example your source MXML or AS3 code) a group of binary objects in a still closed format (swf). <br />
Yes, it is important to remember that, for now, the SWF format is still (as far as I know) a proprietary format&nbsp;! We will come back on that later.<br />
<br />
Let's have a little flashback on the open sourcing of flash. Until Flash MX 2004, the tools used to create flash applets were all closed source and all proprietary. Then came Nicolas CANASSE and Mtasc. For the first time, we had a free and open source way to compile assets in the latest up to date swf binary format. The stance of Macromedia at that time was to encourage the initiative, and it was already a great progress. And MTasc was open source, which means that not only was it free to use, but you also had with it the ability to audit the source code to check where it could fail, and also play with it to create new powerful functionalities from it (see <a href="http://osflash.org/hamtasc" hreflang="en">HamTasc</a>).<br />
Then came Flex and AS3. Since it was born, the Flex framework was free to use. Although it was already a really appreciable move from Adobe it had its side effects. For example, Nicolas CANASSE would not create an AS3 compatible MTasc since he did not see why he would create an alternative for a framework that was free to use. And thus we lost all the power we had with MTasc. We could not play at the source anymore.<br />
Now that power is back, and it may be for the best... And yet not.<br />
<br />
Because swf is still a binary proprietary format. It is not by any mean an open standard&nbsp;! One could object swf is a <em>de facto</em> standard through its extensive usage over the web... But just as much as JPEG or GIF are !<br />
Now, the great move would have been to open the swf specification, but such is not the case.<br />
<br />
Let's think outside of any context for now. No I really mean it. Please just put aside the fact that PDF is now an ISO standard and also put aside every former moves by either Adobe or Microsoft. It will be time to think about it again in the next part of this analysis.<br />
<br /></p>
<ul>
<li>We have free and open source tools to develop flash source assets (FlashDevelop, Scite, ASDT etc)<br /></li>
<li>We now have free and open source tools to convert these source assets in swf binary format<br /></li>
<li>We have a free widespread plugin for internet browsers that can interpret this binary format<br /></li>
<li>And... <strong>for now</strong> (mark my words) these binary format are free to use, free to deliver...<br /></li>
</ul>
<p><br />
Yet if you think about it, this format we love or hate is now more at risk than ever. Let us admit that using this free and open source framework creates a wonderful momentum around the technology, and that tomorrow more and more web applications (and/or sites) are developped using flash foundation technologies. And that at a given point Adobe decides to have you pay a license to deploy a swf binary. What will you do&nbsp;? You will pay off course or you will fear the lawsuits.<br />
<br />
This first part of the analysis was there to underline the key concepts of what is free and/or open source in the swf chain. The next parts will deal about&nbsp;:</p>
<ul>
<li>Part 2&nbsp;: The Mozilla license and Ecma - Flex SDK and Tamarin</li>
<li>Part 3&nbsp;: Adobe and open source - Analysis of the strategy</li>
</ul>]]></content:encoded>
</item>
<item rdf:about="http://www.aggelos.org/index.php?2006/08/07/75-pic-nic-flash-in-paris-premiere-edition">
  <title>Pic nic Flash in Paris, première édition</title>
  <link>http://www.aggelos.org/index.php?2006/08/07/75-pic-nic-flash-in-paris-premiere-edition</link>
  <dc:date>2006-08-07T11:54:09+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>General</dc:subject>
  <description>Oulah y a de la poussière ici.

Bref, a l'occasion de la montée a Paris d'un helvète du nom de Cédric TABIN (thecaptain), je propose

un petit pic nic ce week end,
genre par exemple samedi soir
genre par exemple à partir de 19h
genre par exemple sur les canaux de la Seine
et genre par exemple à tous...</description>
  <content:encoded><![CDATA[ <p>Oulah y a de la poussière ici.<br />
<br />
Bref, a l'occasion de la montée a Paris d'un helvète du nom de Cédric TABIN (thecaptain), je propose<br />
<br />
un petit pic nic ce week end,<br />
genre par exemple samedi soir<br />
genre par exemple à partir de 19h<br />
genre par exemple sur les canaux de la Seine<br />
et genre par exemple à tous les flasheux sur Paris à cette date<br />
<br />
<br />
On leve la main bien haut si on veut venir s'il vous plait !<br />
Et on passe le message, parce que plus on est de fous, plus il y aura de la salade de riz<br /></p>]]></content:encoded>
</item>
<item rdf:about="http://www.aggelos.org/index.php?2006/06/12/74-fermeture-des-commentaires-avant-fermeture-definitive">
  <title>Fermeture des commentaires avant fermeture définitive</title>
  <link>http://www.aggelos.org/index.php?2006/06/12/74-fermeture-des-commentaires-avant-fermeture-definitive</link>
  <dc:date>2006-06-12T00:38:00+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>General</dc:subject>
  <description>Attendu que je n'utilise presque plus ce blog, étant donné que je ne fais presque plus de flash pour mon plaisir.

Attendu que l'essentiel des commentaires que je recois sont du spam

Je prends la décision de fermer les commentaires. Attendez vous à une éventuelle fermeture de ce blog.

Bien...</description>
  <content:encoded><![CDATA[ <p>Attendu que je n'utilise presque plus ce blog, étant donné que je ne fais presque plus de flash pour mon plaisir.<br />
<br />
Attendu que l'essentiel des commentaires que je recois sont du spam<br />
<br />
Je prends la décision de fermer les commentaires. Attendez vous à une éventuelle fermeture de ce blog.<br />
<br />
Bien cordialement, l'auteur</p>]]></content:encoded>
</item>
<item rdf:about="http://www.aggelos.org/index.php?2006/04/29/73-pourquoi-flex2-sera-le-premier-pas-vers-linux">
  <title>Pourquoi Flex2 sera le premier pas vers linux</title>
  <link>http://www.aggelos.org/index.php?2006/04/29/73-pourquoi-flex2-sera-le-premier-pas-vers-linux</link>
  <dc:date>2006-04-29T12:34:51+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>General</dc:subject>
  <description>Je discute avec Kiroukou (Thomas PFEIFFER, l'auteur de Sandy) à l'instant, et il semble surpris quand je dis que j'attends l'annonce imminente de la sortie de Flex2 pour linux. Voici mon analyse de la situation.</description>
  <content:encoded><![CDATA[<p>Je discute avec Kiroukou (Thomas PFEIFFER, l'auteur de Sandy) à l'instant, et il semble surpris quand je dis que j'attends l'annonce imminente de la sortie de Flex2 pour linux. Voici mon analyse de la situation.</p> <p>Rappelez vous, il y a un an</p>

<blockquote><p>Y aura-t-il un portage de l'IDE pour linux&nbsp;?</p>
<p>
MC Nous y avons sérieusement réfléchi, mais ce n'est pas une priorité. Nous aimerions qu'il y ait plus de demande pour ca
Oui, mais la seule chose qui fait que certains restent sous windows c'est flash justement
MC et oui, je sais</p></blockquote>

<p>Bien, faisons maintenant nos observations&nbsp;:</p>
<ol>
<li>Macromedia s'associe a la fondation eclipse. On apprend que flex2 sera basé sur le fameux éditeur libre multi plateformes</li>
<li>Macromedia lache l'alpha publique. Surprise&nbsp;: le framework est en java, technologie multiplateformes</li>
<li>Pas de flash player 8 pour linux. Macromedia laisse tomber la plateforme&nbsp;? Que neni, ils se concentrent sur le FP8.5 (9 maintenant) et veulent l'optimiser pour les archis 64 bits</li>
<li>On apprend que le framework sera gratuit.</li>
</ol>
<p>Des points 1 et 3, on déduit que l'éditeur tel quel pourrait être indépendant de la plateforme. Il n'y a aucun problème entre java et linux, eclipse en est la preuve. Reste le problème à l'heure actuelle&nbsp;: le player est le facteur bloquant. Ce n'est qu'une question de temps.<br />
<br />
Ah, pourquoi je parle du framework gratuit&nbsp;? C'est une question de distribution. S'il n'est pas tres difficile pour certaines distributions de faire des rpms payants, il en va autrement des debian based.<br />
Rendre le framework gratuit, outre le fait que c'est un argument de pub génial, garanti que <em>au strict minimum</em> on pourra trouver Flex2 sur les depots PLF.<br />
<br />
Voila pourquoi je ne doute pas et que j'attends une annonce imminente :)</p>]]></content:encoded>
</item>
<item rdf:about="http://www.aggelos.org/index.php?2006/02/09/72-actus-sur-la-fusion">
  <title>Actus sur la fusion</title>
  <link>http://www.aggelos.org/index.php?2006/02/09/72-actus-sur-la-fusion</link>
  <dc:date>2006-02-09T14:05:57+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>General</dc:subject>
  <description>Ce matin mon j'avais organisé pour mon équipe une rencontre avec un technico commercial d'Adobe (anciennement Macromedia) Question pertinente de mon n+2 sur l'évolution des produits Adobe et Macromedia. Voici l'heure des révisions :

GoLive est sans doute amené a disparaitre. En effet,...</description>
  <content:encoded><![CDATA[ <p>Ce matin mon j'avais organisé pour mon équipe une rencontre avec un technico commercial d'Adobe (anciennement Macromedia)<br /> Question pertinente de mon n+2 sur l'évolution des produits Adobe et Macromedia. Voici l'heure des révisions&nbsp;:</p>
<ul>
<li>GoLive est sans doute amené a disparaitre. En effet, Dreamweaver occupe 75% du marché, et GoLive une place toute à fait marginale</li>
<li>De gros problèmes se posent avec Freehand. Tout à fait marginal en France, il n'en reste pas moins majoritaire en Italie et en Allemagne par exemple, et est très utilisé outre atlantique. Le produit ne disparaitra donc sans doute pas. Au pire il pourrait être revendu.</li>
<li>Ce brave monsieur avait oublié de parler de Paper. Je l'ai rattrapé au vol un peu plus tard. Bah ils ne savent pas apparemment. Ils ne savent pas DU TOUT ce qu'ils vont faire de Paper. En tout cas c'est le message que j'en retiens.</li>
</ul>

<p>Enfin, ouala :)</p>]]></content:encoded>
</item>
<item rdf:about="http://www.aggelos.org/index.php?2006/02/01/71-w00t">
  <title>W00T</title>
  <link>http://www.aggelos.org/index.php?2006/02/01/71-w00t</link>
  <dc:date>2006-02-01T09:33:13+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>General</dc:subject>
  <description>Je relaie la nouvelle : 
Flex 2 sort demain. C'est une bonne nouvelle en soi... Mais on a avec ça une excellente nouvelle...
LE FRAMEWORK FLEX2 ET LES COMPILOS SERONT GRATUITS
J'ai du mal à exprimer ce que je ressens, j'ai envie de baiser les pieds d'Adobe ^^...</description>
  <content:encoded><![CDATA[ <p>Je relaie la nouvelle&nbsp;: <br />
Flex 2 sort demain. C'est une bonne nouvelle en soi... Mais on a avec ça une excellente nouvelle...<br />
LE FRAMEWORK FLEX2 ET LES COMPILOS SERONT <strong>GRATUITS</strong><br />
J'ai du mal à exprimer ce que je ressens, j'ai envie de baiser les pieds d'Adobe ^^</p>]]></content:encoded>
</item>
<item rdf:about="http://www.aggelos.org/index.php?2006/01/16/70--sexier-new-build-agglibtools-beta">
  <title>[SexieR] new build + AggLibTools beta</title>
  <link>http://www.aggelos.org/index.php?2006/01/16/70--sexier-new-build-agglibtools-beta</link>
  <dc:date>2006-01-16T17:57:03+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>General</dc:subject>
  <description>I wanted to make your life easier, once again. Sexier does not have a GUI... yet. And using dynamic libraries may be a pain in the neck for many of you. That's why I've created the AggLibTools and ameliorated SexieR to simplify your life.
To illustrate how you could use SexieR and the Library Tools, here's how I use it to fix the issue of MTasc not compiling mx remoting classes</description>
  <content:encoded><![CDATA[<p>I wanted to make your life easier, once again. Sexier does not have a GUI... yet. And using dynamic libraries may be a pain in the neck for many of you. That's why I've created the AggLibTools and ameliorated SexieR to simplify your life.<br />
To illustrate how you could use SexieR and the Library Tools, here's how I use it to fix the issue of MTasc not compiling mx remoting classes</p> <p>First, we will create the .swf containing the remoting classes.<br />
Let's create the <em>remoting.sexie</em> file&nbsp;:</p>

<pre>mx.remoting.PendingCall
mx.remoting.Service
mx.rpc.FaultEvent
mx.rpc.RelayResponder
mx.rpc.ResultEvent</pre>


<p>the .fla we will compile, containing only&nbsp;:</p>
<pre><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Library<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">doNothing</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre>

<p>then, using ANT and Sexier, we will create the Library.as file&nbsp;:</p>
<pre><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;taskdef</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"sexieLibrary"</span> <span style="color: #000066;">className</span>=<span style="color: #ff0000;">"org.aggelos.sexie.app.ant.SexieLibrary"</span> <span style="color: #000066;">classpath</span>=<span style="color: #ff0000;">"${path.to.sexie}"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;taskdef</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"flashCompile"</span> <span style="color: #000066;">classname</span>=<span style="color: #ff0000;">"FlashANT"</span> <span style="color: #000066;">classpath</span>=<span style="color: #ff0000;">"${user.home}/.fdt"</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"create remoting lib"</span> <span style="font-weight: bold; color: black;">&gt;</span></span>
		<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;sexieLibrary</span> 
					<span style="color: #000066;">outputDirectory</span>=<span style="color: #ff0000;">"remoting"</span> 
					<span style="color: #000066;">sources</span>=<span style="color: #ff0000;">"${pathtoyourclassesfolder}"</span> 
					<span style="color: #000066;">mode</span>=<span style="color: #ff0000;">"mtasc"</span> 
					<span style="color: #000066;">classList</span>=<span style="color: #ff0000;">"remoting.sexie"</span>
		<span style="font-weight: bold; color: black;">/&gt;</span></span>
		 <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;flashCompile</span> <span style="color: #000066;">file</span>=<span style="color: #ff0000;">"remoting.fla"</span> <span style="color: #000066;">exe</span>=<span style="color: #ff0000;">"${path.to.flash}"</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/target<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>

<p>Well, here I made a little shortcut, assuming you used the flashCompile task shipped with FDT. You can do it manually too. Let's suppose that your output swf is <em>remoting.swf</em><br /><br /></p>


<p>I will now explain the parameters for the sexieLibrary task&nbsp;:</p>
<ul>
<li><strong>outputDirectory</strong> is the directory where the results (intrinsic package, or exclusion files, and Library.as) will be created</li>
<li><strong>source</strong> represents a list of the folders where Sexier should be looking for classes, ";" separated</li>
<li><strong>mode</strong> - if set to mtasc, generates a exclude.mtasc file, if xml, generates exclude.xml (to be renamed to yourflaname_exclude.xml), else will generate the intrinsic package</li>
<li><strong>classList</strong> corresponds here to "remoting.sexie"</li>
<li><strong>exclude</strong> corresponds to a ";" separated list of files not to include in the exclusion (a little farfetched, I know)</li>
</ul>


<p>By now you should create another library with all the classes for your application. Let's call it library.sexie</p>

<pre>org.aggelos.myapp.ClassA
org.aggelos.myapp.ClassB</pre>

<p>Sexie will scan for ClassA, ClassB, and all the classes they depend on, and generate the appropriate exclusion files or intrinsic files. The remoting classes will also be included if ClassA and/or ClassB depend on those.<br />
Let's generate the libray and compile it (using mtasc this time :p)</p>

<pre><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;taskdef</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"mtasc"</span> <span style="color: #000066;">classname</span>=<span style="color: #ff0000;">"org.as2lib.ant.Mtasc"</span> <span style="color: #000066;">classpath</span>=<span style="color: #ff0000;">"${path.to.antmtasc}"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"create lib"</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">"creates the library"</span><span style="font-weight: bold; color: black;">&gt;</span></span> 
		<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;sexieLibrary</span> 
			<span style="color: #000066;">outputDirectory</span>=<span style="color: #ff0000;">"main"</span> 
			<span style="color: #000066;">sources</span>=<span style="color: #ff0000;">"${src};${dep1};${dep2}"</span> 
			<span style="color: #000066;">mode</span>=<span style="color: #ff0000;">"mtasc"</span> 
			<span style="color: #000066;">classList</span>=<span style="color: #ff0000;">"library.sexie"</span>
			<span style="color: #000066;">exclude</span>=<span style="color: #ff0000;">"mx.utils.Delegate"</span>
		<span style="font-weight: bold; color: black;">/&gt;</span></span>
             <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mtasc</span> <span style="color: #000066;">mtasc</span>=<span style="color: #ff0000;">"${mtasc.path}"</span> 
    	        	<span style="color: #000066;">src</span>=<span style="color: #ff0000;">"main/Library.as"</span> 
    	        	<span style="color: #000066;">classPath</span>=<span style="color: #ff0000;">"${deps.mtasc}"</span>  
    				<span style="color: #000066;">excl</span>=<span style="color: #ff0000;">"remoting/exclude.mtasc"</span>
    				<span style="color: #000066;">swf</span>=<span style="color: #ff0000;">"library.swf"</span>
    				<span style="color: #000066;">header</span>=<span style="color: #ff0000;">"1:1:25"</span><span style="font-weight: bold; color: black;">&gt;</span></span>        	
    	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/mtasc<span style="font-weight: bold; color: black;">&gt;</span></span></span>  
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/target<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>

<p>I won't come back on how to compile with mtasc, you will find tutorials elsewhere.<br /><br /></p>


<p>Ok, now we have two libraries. How to include them in your code&nbsp;? Here come the AggLibTools. You will need to use two classes&nbsp;:</p>

<pre>LibrariesLoader
LoadingLibrary</pre>

<p>Create a file containing the list of the urls of the libraries you want to load&nbsp;:</p>

<pre>/libs/remoting.swf
/libs/library.swf</pre>

<p>Let's call it libraries.libs</p>

<pre><span style="color: #0066CC;">import</span> org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">utils</span>.<span style="color: #006600;">libs</span>.<span style="color: #006600;">LibrariesLoader</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">utils</span>.<span style="color: #006600;">libs</span>.<span style="color: #006600;">LoadingLibrary</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">app</span>.<span style="color: #006600;">ClassA</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">app</span>.<span style="color: #006600;">ClassB</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Application <span style="color: #66cc66;">&#123;</span>
	
	<span style="color: #000000; font-weight: bold;">function</span> Application<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> ll:LibrariesLoader = <span style="color: #000000; font-weight: bold;">new</span> LibrariesLoader<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>.<span style="color: #006600;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"libs"</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
		
		ll.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"ALL"</span>,<span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
		ll.<span style="color: #006600;">loadFile</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"libraries.lib"</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #000000; font-weight: bold;">function</span> onLibraryStart<span style="color: #66cc66;">&#40;</span>evt:Event<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;">"Starting "</span>+evt.<span style="color: #006600;">target</span>.<span style="color: #006600;">name</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #000000; font-weight: bold;">function</span> onLibraryLoaded<span style="color: #66cc66;">&#40;</span>evt:Event<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;">"Loaded "</span>+evt.<span style="color: #006600;">target</span>.<span style="color: #006600;">name</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #000000; font-weight: bold;">function</span> onLibraryProgress<span style="color: #66cc66;">&#40;</span>evt:Event<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> lib:LoadingLibrary = LoadingLibrary<span style="color: #66cc66;">&#40;</span>evt.<span style="color: #006600;">target</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Progress "</span>+lib.<span style="color: #006600;">bytesLoaded</span>+<span style="color: #ff0000;">"/"</span>+lib.<span style="color: #006600;">bytesTotal</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #000000; font-weight: bold;">function</span> onLibrariesComplete<span style="color: #66cc66;">&#40;</span>evt:Event<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;">"loading complete"</span><span style="color: #66cc66;">&#41;</span>;
                startApp<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #000000; font-weight: bold;">function</span> onLibrariesError<span style="color: #66cc66;">&#40;</span>evt:Event<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;">"Error "</span>+evt.<span style="color: #006600;">target</span>.<span style="color: #006600;">name</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">new</span> Application<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> startApp<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
             <span style="color: #000000; font-weight: bold;">var</span> ca:ClassA = <span style="color: #000000; font-weight: bold;">new</span> ClassA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
             <span style="color: #000000; font-weight: bold;">var</span> cb:ClassB = <span style="color: #000000; font-weight: bold;">new</span> ClassB<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
	
	
	
<span style="color: #66cc66;">&#125;</span></pre>


<p>Your code should really start on the onLibrariesComplete event, when all your libraires are loaded. It may look a tad difficult at first sight, but since you automate everything, the only cost is what you do when starting your project. Well, I now gain a lot of time.<br />
<br />
Everything you need is on the SVN ^^</p>]]></content:encoded>
</item>
<item rdf:about="http://www.aggelos.org/index.php?2006/01/05/69--captivate-les-cheat-codes-p">
  <title>[Captivate] Les cheat codes :p</title>
  <link>http://www.aggelos.org/index.php?2006/01/05/69--captivate-les-cheat-codes-p</link>
  <dc:date>2006-01-05T16:16:48+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>ActionScript</dc:subject>
  <description>Dans le cadre de mon gros projet actuel, je m'étais heurté à un sale bout de code. 
En effet, je voulais une fonctionnalité qui permette d'activer une action en fin de lecture d'un swf captivate. Je pensais naivement que le bout de code suivant allait fonctionner :
var cible:MoviecClip;
 ...</description>
  <content:encoded><![CDATA[ <p>Dans le cadre de mon gros projet actuel, je m'étais heurté à un sale bout de code. <br />
En effet, je voulais une fonctionnalité qui permette d'activer une action en fin de lecture d'un swf captivate. Je pensais naivement que le bout de code suivant allait fonctionner&nbsp;:</p>
<pre><span style="color: #000000; font-weight: bold;">var</span> cible:MoviecClip;
&nbsp;
unmachin.<span style="color: #006600;">onEnterFrame</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: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>cible._currentframe == cible._totalframes<span style="color: #66cc66;">&#41;</span> triggerEvent<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"onFini"</span>,cible<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>

<p>Et bah quedalle&nbsp;! Le changement se faisait beaucoup trop tot, et je n'ai jamais bien su pourquoi, alors n'ayant pas le temps j'avais laissé tomber.<br />
Suite à la demande du patron du patron de mon patron, j'ai rejeté un coup d'oeil à tout cela, et j'ai découvert le pot au roses !<br /><br />
Tout d'abord, test pratique&nbsp;: j'ai voulu regarder ce qui n'allait pas. Résultat, flash me découvre 113 frames dans mon SWF... Pour une demo de plusieur minutes. Bon, surtout, ne pas se dégonfler ;p<br /><br />
Par conséquent, j'ai voulu voir le fla associé au projet .cp.<br />
C'est possible, il faut pour cela&nbsp;:</p>
<ol>
<li>exporter le fla</li>
<li>dans celui ci (vide) importer le .cp</li>
</ol>
<p>Hum... Plus de 7000 frames, je me disais bien.<br /><br />
Réaction&nbsp;: il y a une saloperie qui englobe le contenu dont j'ai besoin et qui a le bon nombre de frames. Allez, un petit for in</p>
<pre><span style="color: #000000; font-weight: bold;">var</span> cont:<span style="color: #0066CC;">MovieClip</span> = <span style="color: #0066CC;">this</span>.<span style="color: #006600;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"cont"</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> mcl:<span style="color: #0066CC;">MovieClipLoader</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">MovieClipLoader</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
mcl.<span style="color: #006600;">addListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onLoadInit</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> prop <span style="color: #b1b100;">in</span> cont<span style="color: #66cc66;">&#41;</span> <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>prop<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>cont <span style="color: #0066CC;">instanceof</span> <span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">//this.onEnterFrame = countCurrentFrame;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
mcl.<span style="color: #006600;">loadClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"uncaptivate.swf"</span>,cont<span style="color: #66cc66;">&#41;</span>;</pre>

<p>Bingo&nbsp;! Voici la sortie&nbsp;:</p>

<pre>isExpired
setExpired
decrementWait
incrementWait
isWaiting
CaptivateVersion
rdcmndNext
rdcmndPrevious
rdcmndPause
rdcmndResume
rdcmndGotoFrame
rdIsPreview
rdIsMainMovie
rdinfoSlideCount
rdinfoCurrentSlideInProject
rdinfoCurrentSlide
rdinfoCurrentFrame
rdinfocurrFrame
rdinfoFPS
rdinfoSlidesInProject
rdinfoFrameCount
loading_mc</pre>

<p>C'est y pas mignon&nbsp;? Alors voila, c'était le piège du jour. Conséquemment, dorénavant, je teste si la propriété CaptivateVersion existe, et si c'est le cas, j'utilise le test</p>
<pre><span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>rdinfoCurrentFrame==rdinfoFrameCount<span style="color: #66cc66;">&#41;</span></pre>]]></content:encoded>
</item>
<item rdf:about="http://www.aggelos.org/index.php?2006/01/03/68--sexier-premier-update">
  <title>[Sexier] Premier update</title>
  <link>http://www.aggelos.org/index.php?2006/01/03/68--sexier-premier-update</link>
  <dc:date>2006-01-03T16:44:17+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>General</dc:subject>
  <description>Ca y est, la fonctionnalité permettant de générer tout ce qui faut pour une librairie partagée est prête ^^. L'occasion pour moi de vous démontrer comment avec un simple script ant on peut créer un déploiement automatique d'application avec une librairie partagée.


Imaginons la classe de départ...</description>
  <content:encoded><![CDATA[ <p>Ca y est, la fonctionnalité permettant de générer tout ce qui faut pour une librairie partagée est prête ^^. L'occasion pour moi de vous démontrer comment avec un simple script ant on peut créer un déploiement automatique d'application avec une librairie partagée.<br /><br /></p>


<p>Imaginons la classe de départ suivante&nbsp;:</p>
<pre><span style="color: #0066CC;">import</span> org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">myapp</span>.<span style="color: #006600;">ClassA</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">myapp</span>.<span style="color: #006600;">ClassB</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Application <span style="color: #66cc66;">&#123;</span>
	
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Application<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> classA:ClassA = <span style="color: #000000; font-weight: bold;">new</span> ClassA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> classB:ClassB = <span style="color: #000000; font-weight: bold;">new</span> ClassB<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">void</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> app:Application = <span style="color: #000000; font-weight: bold;">new</span> Application<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
<span style="color: #66cc66;">&#125;</span></pre>


<p>Ce qu'il y a, c'est que ClassA et ClassB sont utilisées par d'autres SWF de mon application... On veut donc les charger dynamiquement via une librairie partagée.<br />
Qu'à cela ne tienne, il suffit de changer le code de la sorte&nbsp;:</p>
<pre><span style="color: #0066CC;">import</span> org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">myapp</span>.<span style="color: #006600;">ClassA</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">myapp</span>.<span style="color: #006600;">ClassB</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Application <span style="color: #66cc66;">&#123;</span>
	
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> tgt:<span style="color: #0066CC;">MovieClip</span>;
	
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Application<span style="color: #66cc66;">&#40;</span>tgt:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">this</span>.<span style="color: #006600;">tgt</span> = tgt;
		
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> container:<span style="color: #0066CC;">MovieClip</span> = tgt.<span style="color: #006600;">createMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"lib"</span>,tgt.<span style="color: #006600;">getNextHighestDepth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> mcl:<span style="color: #0066CC;">MovieClipLoader</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">MovieClipLoader</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		mcl.<span style="color: #006600;">addListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;
		mcl.<span style="color: #006600;">loadClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"library.swf"</span>,container<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onLoadInit</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> classA:ClassA = <span style="color: #000000; font-weight: bold;">new</span> ClassA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> classB:ClassB = <span style="color: #000000; font-weight: bold;">new</span> ClassB<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
	<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">void</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> app:Application = <span style="color: #000000; font-weight: bold;">new</span> Application<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">_root</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	
<span style="color: #66cc66;">&#125;</span></pre>

<p>Bon, le problème, c'est qu'il ne faut pas&nbsp;:</p>
<ul>
<li>ni que A et B ne soient inclus dans ce swf</li>
<li>ni que les classes dont dépendent A et B soient incluses</li>
</ul>
<p>Qu'à cela ne tienne, il suffit&nbsp;:</p>
<ul>
<li>pour MTasc faire un fichier de la sorte</li>
</ul>
<pre>org.aggelos.myapp.ClassA
org.aggelos.myapp.ClassB
org.aggelos.myapp.ClassDependsA1
org.aggelos.myapp.ClassDependsA2
...</pre>
<ul>
<li>pour MMC un xml d'exclusion de la sorte&nbsp;:</li>
</ul>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;excludeAssets&gt;
  &lt;asset name="org.aggelos.myapp.ClassA" /&gt;
  &lt;asset name="org.aggelos.myapp.ClassB" /&gt;
  &lt;asset name="org.aggelos.myapp.ClassDependsA1" /&gt;
  &lt;asset name="org.aggelos.myapp.ClassDependsA2" /&gt;
&lt;/excludeAssets&gt;</pre>
<ul>
<li>dans les deux cas, il est possible d'utiliser les classes intrinsèques.</li>
</ul>

<p>La gestion des dépendances, c'est un beau bordel. C'est là qu'intervient SexieR. <br /><br /></p>


<p>Je veux une librairie qui incluse ClassA, ClassB et toutes leurs dépendances. Je vais juste créer un fichier "librairy.sexie" et un petit fichier build.xml pour ant</p>
<pre><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;</span>?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"1.0"</span>?<span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- ====================================================================== 
     Jan 2, 2006 4:27:28 PM                                                        
&nbsp;
     Sexie test                                                      
     ====================================================================== --&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;project</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"Sexie test"</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">"default"</span><span style="font-weight: bold; color: black;">&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;property</span> <span style="color: #000066;">file</span>=<span style="color: #ff0000;">"build.properties"</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;taskdef</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"sexieLibrary"</span> <span style="color: #000066;">className</span>=<span style="color: #ff0000;">"org.aggelos.sexie.app.ant.SexieLibrary"</span> <span style="color: #000066;">classpath</span>=<span style="color: #ff0000;">"${path.to.sexie}"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;taskdef</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"mtasc"</span> <span style="color: #000066;">classname</span>=<span style="color: #ff0000;">"org.as2lib.ant.Mtasc"</span> <span style="color: #000066;">classpath</span>=<span style="color: #ff0000;">"${path.to.antmtasc}"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
		
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"sexie library"</span> <span style="font-weight: bold; color: black;">&gt;</span></span>
	    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;sexieLibrary</span> <span style="color: #000066;">outputDirectory</span>=<span style="color: #ff0000;">"${basedir}/src"</span> <span style="color: #000066;">source</span>=<span style="color: #ff0000;">"${src}"</span> <span style="color: #000066;">mode</span>=<span style="color: #ff0000;">"mtasc"</span> <span style="color: #000066;">dependencies</span>=<span style="color: #ff0000;">"${dep1};${dep2}"</span> <span style="color: #000066;">classList</span>=<span style="color: #ff0000;">"${lib.src}"</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/target<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	
&nbsp;
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;target</span>  <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"compile library"</span> <span style="font-weight: bold; color: black;">&gt;</span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mtasc</span> <span style="color: #000066;">mtasc</span>=<span style="color: #ff0000;">"${mtasc.path}"</span> 
        	<span style="color: #000066;">src</span>=<span style="color: #ff0000;">"${basedir}/src/Library.as"</span> 
        	<span style="color: #000066;">excl</span>=<span style="color: #ff0000;">"exclude.mtasc"</span>
        	<span style="color: #000066;">classPath</span>=<span style="color: #ff0000;">"${deps.mtasc}"</span> 
        	<span style="color: #000066;">swf</span>=<span style="color: #ff0000;">"${basedir}/bin/library.swf"</span>
        	<span style="color: #000066;">mx</span>=<span style="color: #ff0000;">"true"</span> 
        	<span style="color: #000066;">header</span>=<span style="color: #ff0000;">"1:1:25"</span><span style="font-weight: bold; color: black;">&gt;</span></span>        	
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/mtasc<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/target<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;target</span>  <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"compile app"</span> <span style="font-weight: bold; color: black;">&gt;</span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mtasc</span> <span style="color: #000066;">mtasc</span>=<span style="color: #ff0000;">"${mtasc.path}"</span> 
        	<span style="color: #000066;">src</span>=<span style="color: #ff0000;">"${basedir}/src/Application.as"</span> 
        	<span style="color: #000066;">excl</span>=<span style="color: #ff0000;">"src/exclude.mtasc"</span>
        	<span style="color: #000066;">classPath</span>=<span style="color: #ff0000;">"${deps.mtasc}"</span> 
        	<span style="color: #000066;">swf</span>=<span style="color: #ff0000;">"${basedir}/bin/main.swf"</span>
        	<span style="color: #000066;">header</span>=<span style="color: #ff0000;">"800:600:25"</span><span style="font-weight: bold; color: black;">&gt;</span></span>        	
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/mtasc<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/target<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/project<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>

<p>Bon, un peu d'explications&nbsp;:</p>
<pre><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;taskdef</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"sexieLibrary"</span> <span style="color: #000066;">className</span>=<span style="color: #ff0000;">"org.aggelos.sexie.app.ant.SexieLibrary"</span> <span style="color: #000066;">classpath</span>=<span style="color: #ff0000;">"${path.to.sexie}"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;taskdef</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"mtasc"</span> <span style="color: #000066;">classname</span>=<span style="color: #ff0000;">"org.as2lib.ant.Mtasc"</span> <span style="color: #000066;">classpath</span>=<span style="color: #ff0000;">"${path.to.antmtasc}"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span></pre>

<p>On crée ici deux taches, la tache mtasc, pour la compilation, et la tache sexieLibrary.<br /><br /></p>
<ul>
<li>mtasc necessite as2ant.har, une partie de as2lib (ici précisé dans la variable ${path.to.antmtasc} dans le build.properties</li>
<li>sexieLibrart necessite sexie.jar et dom4j.jar si vous voulez générer du XML</li>
</ul>
<pre><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"sexie library"</span> <span style="font-weight: bold; color: black;">&gt;</span></span>
	    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;sexieLibrary</span> 
             <span style="color: #000066;">outputDirectory</span>=<span style="color: #ff0000;">"${basedir}/src"</span> 
             <span style="color: #000066;">source</span>=<span style="color: #ff0000;">"${src}"</span> 
             <span style="color: #000066;">mode</span>=<span style="color: #ff0000;">"mtasc"</span> 
             <span style="color: #000066;">dependencies</span>=<span style="color: #ff0000;">"${dep1};${dep2}"</span> 
             <span style="color: #000066;">classList</span>=<span style="color: #ff0000;">"${lib.src}"</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/target<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>

<p>Voila un target ant, qui executé lance la création du matériel de librairie par Sexie</p>
<ul>
<li>outputDirectory est le répertoire dans lequel sexie créera ses résultats</li>
<li>source est la racine du package source</li>
<li>mode - si mtasc, génère un fichier exclude.mtasc pour mtasc, si xml, génère un xml d'exclusion, si intrinsic génère le package de classes intrinsèques</li>
<li>dependencies est la liste des packages dont dépend votre package principal. En généra le répertoire Classes de flash rentre là dedans</li>
<li>classList est la fameux fichier "librarie.sexie"</li>
</ul>
<p>Ce dernier fichier à la forme suivante&nbsp;:</p>

<pre>org.aggelos.myapp.ClassA
org.aggelos.myapp.ClassB</pre>

<p>tout simplement<br /><br />
Si je lance cette tache, je récupère le fichier d'exclusion ou le package intrinsèque complet (avec toutes les dépendances) et le fichier Library.as suivant&nbsp;:</p>
<pre><span style="color: #000000; font-weight: bold;">class</span> Library <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">MovieClip</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> doNothing<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> arr:<span style="color: #0066CC;">Array</span> = <span style="color: #66cc66;">&#91;</span>
			org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">myapp</span>.<span style="color: #006600;">ClassA</span>,
 			org.<span style="color: #006600;">aggelos</span>.<span style="color: #006600;">myapp</span>.<span style="color: #006600;">ClassB</span>
		<span style="color: #66cc66;">&#93;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Library<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">doNothing</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre>

<p>Bien, il ne nous reste donc plus qu'a compiler tout ça. J'ai pris le cas ou on génère le fichier mtasc, donc j'utilise l'attribut excl de la tache mtasc pour choisir un fichier d'exclusion.<br />
Voila, si vous voulez, vous pouvez faire un dernier target qui fait tout dans l'ordre, et tout votre build est maintenant automatisé. Vive la technologie ^^</p>]]></content:encoded>
</item>
<item rdf:about="http://www.aggelos.org/index.php?2006/01/03/67--sexier-le-daveloppement-flash-va-devenir-chaud">
  <title>[Sexier] Le développement Flash va devenir chaud !</title>
  <link>http://www.aggelos.org/index.php?2006/01/03/67--sexier-le-daveloppement-flash-va-devenir-chaud</link>
  <dc:date>2006-01-03T10:03:09+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Aggelos</dc:creator>
  <dc:subject>General</dc:subject>
  <description>SexieR (Sexie Reloaded) est prêt... Enfin, dans les grandes lignes ^^



Note préliminaire : si vous ne connaissez pas le principe des librairies partagées, fichiers d'exclusion et classes intrinsèques, reportez vous à  cet article


Vous vous rappelez de Sexie ? Un truc un peu fastidieux...</description>
  <content:encoded><![CDATA[ <p>SexieR (Sexie Reloaded) est prêt... Enfin, dans les grandes lignes ^^
<br /><br /></p>


<p>Note préliminaire&nbsp;: si vous ne connaissez pas le principe des librairies partagées, fichiers d'exclusion et classes intrinsèques, <a href="http://wiki.media-box.net/tutoriaux/flash/bibliotheques_de_fonctions&quot;">reportez vous à  cet article</a><br /><br /></p>


<p>Vous vous rappelez de Sexie&nbsp;? Un truc un peu fastidieux utilisant le workaround des swc pour générer les classes intrinsèques pour une librairie donnée&nbsp;? Et bien madame, jetez le, vous n'en aurez plus besoin ^^ <br /><br />
J'ai relancé le projet Sexie avec une volonté claire&nbsp;: faire en sorte que la création des librairies et fichiers d'exclusion fasse partie de processus automatisés.<br />Par conséquent, Sexier ne vous demande plus la création d'un fichier SWC, il peut (dès maintenant) générer tous types de fichiers d'exclusion de compilation (intrinsic, mtasc, xml pour mmc) Ã  partir d'un simple répertoire de classes, et éventuellement d'une liste de répertoires de classes dépendantes.<br /><br />Pas d'interface pour l'instant (ça va venir) mais une tâche Ant pour rendre tout ça tout automatique ^^<br /><br /></p>
<pre><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;taskdef</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"sexiePackage"</span> <span style="color: #000066;">className</span>=<span style="color: #ff0000;">"org.aggelos.sexie.app.ant.SexiePackage"</span>
<span style="color: #000066;">classpath</span>=<span style="color: #ff0000;">"${path.to.sexie}"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"default"</span> <span style="font-weight: bold; color: black;">&gt;</span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;sexiePackage</span> <span style="color: #000066;">outputDirectory</span>=<span style="color: #ff0000;">"${basedir}/src"</span> <span style="color: #000066;">source</span>=<span style="color: #ff0000;">"${src}"</span>
<span style="color: #000066;">mode</span>=<span style="color: #ff0000;">"mtasc"</span> <span style="color: #000066;">dependencies</span>=<span style="color: #ff0000;">"${dep1};${dep2}"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/target<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>

<p><br />arguments&nbsp;:</p>
<ul>
<li>outputDirectory&nbsp;: le répertoire dans lequel le résultat sera créé</li>
<li>source&nbsp;: le répertoire de classes</li>
<li>mode&nbsp;: mtasc - intrinsic - xml. intrinsic par défaut</li>
<li>dependencies&nbsp;: classpathes à  inclure séparés par ";"</li>
</ul>
<p><br /><br /></p>


<p>Alors c'est encore en création, je prévois au moins un build par semaine. Voici la liste des features encore à implémenter&nbsp;:</p>
<ul>
<li>même chose à partir d'un fichier contenant une liste de classes. Le fichier Library.as serait automatiquement généré</li>
<li>gestion des #include dans la gestion des dépendances (non implémenté encore)</li>
<li>faire une interface propre</li>
<li>réimplémentation des anciennes fonctionnalités avec refactoring (en attendant utilisez l'ancien sexie)</li>
</ul>
<p><br />Si vous voulez aider, vous pouvez&nbsp;:</p>
<ul>
<li>faire du beta testing</li>
<li>fournir des tests JUnit pour améliorer le tout</li>
<li>participer au code (qui est toujours GNU GPL :) )</li>
</ul>
<p><br />Le projet dispose d'un Trac, d'un SVN etc. cf la <a href="http://osflash.org/sexie">partie Sexie sur le site OSFlash</a></p>]]></content:encoded>
</item>

</rdf:RDF>
