<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://ressources.mediabox.fr/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel>
        <title>Ressources Mediabox</title>
        <description></description>
        <link>http://ressources.mediabox.fr/</link>
        <lastBuildDate>Thu, 29 Jul 2010 20:17:42 +0200</lastBuildDate>
        <generator>FeedCreator 1.7.2-ppt DokuWiki</generator>
        <image>
            <url>http://ressources.mediabox.fr/lib/images/favicon.ico</url>
            <title>Ressources Mediabox</title>
            <link>http://ressources.mediabox.fr/</link>
        </image>
        <item>
            <title>Méthodes et propriétés statiques - lienforum</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static</link>
            <description>&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 16 juin 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h1&gt;&lt;a name=&quot;methodes_et_proprietes_statiques&quot; id=&quot;methodes_et_proprietes_statiques&quot;&gt;Méthodes et propriétés statiques&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ça y est la balade touche à sa fin. On a vu le plus gros du primordial. Ne reste plus à traiter que le cas du &lt;strong&gt;mot clé attribut static&lt;/strong&gt;, attaquons donc sans plus de préambule.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
C&amp;#039;est un mot clé bien utile : il permet de spécifier qu&amp;#039;une méthode (variable ou constante)  appartient à la classe, et non pas aux occurrences de la classe. C&amp;#039;est la doc qui le dit.&lt;br/&gt;

Présenté autrement : c&amp;#039;est utile quand on souhaite se fabriquer ce que j&amp;#039;ai appelé une classe outil en introduction. Une classe qu&amp;#039;on souhaite utiliser sans en créer d&amp;#039;instance, justement. J&amp;#039;avais pris pour exemple le volume d&amp;#039;un tonneau… &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc#dans_quel_but&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Vous vous souvenez ?&lt;/a&gt;&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;methode_statique&quot; id=&quot;methode_statique&quot;&gt;Méthode statique&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Une méthode statique, donc, est appelée directement depuis la classe sans nécessité d&amp;#039;en créer une instance. &lt;br/&gt;

On peut prendre pour exemple, une classe native fréquemment utilisée que vous connaissez sûrement : la classe &lt;strong&gt;&lt;code&gt;Math&lt;/code&gt;&lt;/strong&gt;. Elle met à notre disposition une quantité de méthodes, toutes statiques (&lt;strong&gt;&lt;code&gt;cos&lt;/code&gt;, &lt;code&gt;floor&lt;/code&gt;, &lt;code&gt;max&lt;/code&gt;&lt;/strong&gt;…). C&amp;#039;est clairement lisible dans leur signature. Prenons la méthode &lt;a href=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/Math.html#cos%28%29&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/Math.html#cos%28%29&quot;  rel=&quot;nofollow&quot;&gt;cos,&lt;/a&gt; :&lt;br/&gt;

&lt;/p&gt;
&lt;div class=&quot;wrap_quote wrap_cyan&quot;&gt;
public &lt;strong&gt;static&lt;/strong&gt; function cos(angleRadians:Number):Number
&lt;/div&gt;&lt;div class=&quot;horizontalLine&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
Je vous propose, à titre d&amp;#039;exemple, une classe générique de traitement des dates que vous pourrez fort bien ranger dans le répertoire Mezoutils (du moins l&amp;#039;équivalent chez vous)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
La classe &lt;code&gt;Date&lt;/code&gt; native nous donne déjà beaucoup d&amp;#039;outils bien utiles, mais dès qu&amp;#039;on sort des chemins battus on se fait suer pour calculer une différence entre deux dates ou plus bêtement le numéro du jour (de l&amp;#039;année : 32 pour le 1er février). Il suffit d&amp;#039;en avoir besoin une fois pour se dire que “pff… Il serait bon de stocker les quelques lignes quelque part…”&lt;br/&gt;

C&amp;#039;est le cadre idéal à la création d&amp;#039;une classe.
&lt;/p&gt;

&lt;p&gt;
Comme d&amp;#039;habitude on commence par rêver, par imaginer comment on aimerait l&amp;#039;utiliser, cette classe.&lt;br/&gt;

On l&amp;#039;appèlerait &lt;code&gt;GestionDates&lt;/code&gt;.&lt;br/&gt;

Comme on n&amp;#039;a pas besoin d&amp;#039;en manipuler des instances, l&amp;#039;idéal serait d&amp;#039;appeler ses méthodes directement. Imaginons une méthode numJour qui renverrait le numéro du jour de l&amp;#039;année :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// le .fla&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; GestionDates
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; laDate:&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;2010/2/1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;GestionDates.&lt;span class=&quot;me1&quot;&gt;numJour&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;laDate&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Normalement (du moins avec ce qu&amp;#039;on sait) invoquer une méthode c&amp;#039;est invoquer la méthode d&amp;#039;un objet de la classe (une instance de la classe). Si on écrit la classe &lt;code&gt;GestionDates&lt;/code&gt; comme on sait le faire avec une méthode publique &lt;code&gt;numJour&lt;/code&gt;…
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; GestionDates &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;co1&quot;&gt;// numéro du jour depuis le premier janvier de la même année&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; numJour&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pD:&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;// retourne n'importe quoi le temps de tester&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;88&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
… et qu&amp;#039;on essaie de l&amp;#039;appeler comme dans nos rêves, on obtient une erreur à la compilation :
&lt;/p&gt;
&lt;div class=&quot;wrap_quote wrap_red&quot;&gt;
1061: Appel à la méthode numJour peut-être non définie, via la référence de type static Class.&lt;/div&gt;
&lt;p&gt;
Si je traduis ce que râle le compilateur ça donne : “Hey Machin ! Tu fais appel à une méthode statique &lt;code&gt;numJour&lt;/code&gt; et je ne la trouve pas…”&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Quoi statique ?! On n&amp;#039;a rien précisé…&lt;br/&gt;

Justement… Il se trouve qu&amp;#039;on peut invoquer une méthode de classe depuis la classe elle même, mais ça implique qu&amp;#039;elle soit statique. C&amp;#039;est ce qui a trompé le compilateur : il voit un appel direct, il se dit “tiens, une méthode statique”, il ne la trouve pas, il récrimine…
&lt;/p&gt;

&lt;p&gt;
Ajoutez &lt;strong&gt;static devant le nom de fonction&lt;/strong&gt;, ayé le tour est joué &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;                &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; numJour&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pD:&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;// retourne n'importe quoi le temps de tester&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;88&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;div class=&quot;wrap_important&quot;&gt;
&lt;strong&gt;A noter :&lt;/strong&gt; &lt;br/&gt;

Pas de this dans une fonction statique puisque il n&amp;#039;y a pas d&amp;#039;instance…
&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;constante_statique&quot; id=&quot;constante_statique&quot;&gt;Constante statique&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Travailler des dates implique de travailler avec des millisecondes, ce qui est loin d&amp;#039;être pratique… Le nombre de millisecondes contenues en un jour, autant se le calculer une bonne fois pour toutes et en faire une constante globale privée et statique elle aussi puisque concernant la classe et non ses instances. On la définit donc en haut du bloc classe comme suit :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;static&lt;/span&gt; const msJour:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Il ne reste plus qu&amp;#039;à écrire les deux lignes qui vont bien dans la fonction :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; numJour&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pD:&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; premierJour:&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pD.&lt;span class=&quot;me1&quot;&gt;fullYear&lt;/span&gt;,0,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pD.&lt;span class=&quot;kw3&quot;&gt;getTime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - premierJour.&lt;span class=&quot;kw3&quot;&gt;getTime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;msJour+&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Et du coup à moindre frais on peut ajouter à cette classe une autre méthode &lt;code&gt;dateDiff&lt;/code&gt; qui donne le nombre de jours entre deux dates :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; dateDiff&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pD1:&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;,pD2:&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pD1.&lt;span class=&quot;kw3&quot;&gt;getTime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;-pD2.&lt;span class=&quot;kw3&quot;&gt;getTime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;msJour;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;div class=&quot;horizontalLine&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
C&amp;#039;était donc ça ! S&amp;#039;exclame Ronchon, en faisant référence à ce qu&amp;#039;on a mis en place quand on a vu comment diffuser un événement.&lt;br/&gt;

Hé oui, &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2#respecter_les_conventions_d_ecriture&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;souvenez vous&lt;/a&gt; : avec nos boites modales on avait diffusé un événement &lt;code&gt;BtClick&lt;/code&gt;, et pour respecter les conventions d&amp;#039;écriture, on avait sorti une constante statique &lt;code&gt;BT_CLICK&lt;/code&gt; 
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;static&lt;/span&gt; const BT_CLICK:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;BtClick&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Ce qui nous permettait d&amp;#039;y accéder directement depuis la classe BoiteAlerte - et non depuis une de ses instances :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;bteDemo.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BoiteAlerte.&lt;span class=&quot;me1&quot;&gt;BT_CLICK&lt;/span&gt;,compte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Là aussi, force est de constater qu&amp;#039;on utilise des constantes statiques depuis tout le temps avec les classes natives… Je pense, par exemple, à la classe &lt;strong&gt;&lt;code&gt;MouseEvent&lt;/code&gt;&lt;/strong&gt;, une des premières qu&amp;#039;on utilise et qui expose &lt;strong&gt;&lt;code&gt;MOUSE_DOWN&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;CLICK&lt;/code&gt;&lt;/strong&gt; et autres &lt;strong&gt;&lt;code&gt;ROLL_OVER&lt;/code&gt;&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;variable_statique&quot; id=&quot;variable_statique&quot;&gt;Variable statique&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

On peut aussi déclarer une variable (ou une fonction) comme étant statique, au sein d&amp;#039;une classe qui instancie des objets.&lt;br/&gt;

Ne croyez pas que le mot clé static soit réservé aux classes qui n&amp;#039;instancient rien. Il signifie seulement que la variable en question qualifie la classe et non chacune de ses instances, ou que la méthode sera appelée depuis la classe et non depuis une de ses instances.
&lt;/p&gt;

&lt;p&gt;
Une petite illustration plutôt qu&amp;#039;un long discours :&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Soit une classe destinée à être associée à un symbole (donc instances) :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DemoStaticProp &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// une statique :&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; nbOccurences:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=0;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; DemoStaticProp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                        &lt;span class=&quot;co1&quot;&gt;// statique incrémentée&lt;/span&gt;
			nbOccurences++;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;constructeur &amp;quot;&lt;/span&gt;+ &lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;+ &lt;span class=&quot;st0&quot;&gt;&amp;quot; nb occurences &amp;quot;&lt;/span&gt;+ nbOccurences&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Du côté du .fla on associe un ou plusieurs symboles à cette classe (via le champ Classe de base) et on dispose des instances sur la scène :&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static/copiedemostatic1.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Astatic&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static:copiedemostatic1.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static/copiedemostatic1.jpg?w=618&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;618&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Et on écrit une unique ligne en action d&amp;#039;image 1 :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ds le fla je compte les instances : &amp;quot;&lt;/span&gt;+DemoStaticProp.&lt;span class=&quot;me1&quot;&gt;nbOccurences&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class=&quot;code trace&quot;&gt;constructeur [object Mv_Girafe] nb occurences 1
constructeur [object Mv_Elephant] nb occurences 2
constructeur [object Mv_Girafe] nb occurences 3
constructeur [object Mv_Elephant] nb occurences 4
constructeur [object Mv_Elephant] nb occurences 5
constructeur [object Mv_Girafe] nb occurences 6
ds le fla je compte les instances : 6&lt;/pre&gt;
&lt;p&gt;
Pour finir la démonstration, occupons nous de faire en sorte que la variable de classe nbOccurences soit mise à jour quand on supprime une instance :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Event&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DemoStaticProp &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; nbOccurences:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=0;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; DemoStaticProp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			nbOccurences++;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;constructeur &amp;quot;&lt;/span&gt;+ &lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;+ &lt;span class=&quot;st0&quot;&gt;&amp;quot; nb occurences &amp;quot;&lt;/span&gt;+ nbOccurences&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class=&quot;co1&quot;&gt;// Ecouter la suppression&lt;/span&gt;
			addEventListener&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Event.&lt;span class=&quot;me1&quot;&gt;REMOVED_FROM_STAGE&lt;/span&gt;, supprime&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// Quand supprimé nbOccurences décrémenté&lt;/span&gt;
		&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; supprime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			nbOccurences--;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Dans le fla :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ds le fla je compte les instances : &amp;quot;&lt;/span&gt;+DemoStaticProp.&lt;span class=&quot;me1&quot;&gt;nbOccurences&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// j'écoute le clic sur enfants de la scène : argument true)&lt;/span&gt;
addEventListener&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;, sup,&lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; sup&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	removeChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me.&lt;span class=&quot;kw3&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Il reste : &amp;quot;&lt;/span&gt;+DemoStaticProp.&lt;span class=&quot;me1&quot;&gt;nbOccurences&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;conclusion&quot; id=&quot;conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Voilà, non pas que tout soit dit… &lt;br/&gt;

Loin de là, mais j&amp;#039;espère que maintenant vous avez les idées claires et disposez du vocabulaire nécessaire à lire la doc ou des ouvrages traitant de POO AS3 sans butter sur tous les mots &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;

• &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/pratique_as3&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:pratique_as3&quot;&gt;L&amp;#039;incontournable de Thibault Imbert&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
• &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/poo-as3-1-classes&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:poo-as3-1-classes&quot;&gt;Un tuto classique sur les classes et la POO AS3 par Tannoy&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
• &lt;a href=&quot;http://help.adobe.com/fr_FR/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f35.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://help.adobe.com/fr_FR/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f35.html&quot;  rel=&quot;nofollow&quot;&gt; Sans oublier la doc, bien sûr&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Vous pourrez mettre en œuvre vos toutes fraiches connaissances via le tuto de Gnicos
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/affichage/animation/suivre_la_souris_avec_la_poo&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:affichage:animation:suivre_la_souris_avec_la_poo&quot;&gt;Déplacer un objet d&amp;#039;après les coordonnées de la souris&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;

Je vous remercie de m&amp;#039;avoir accompagnée jusque là, j&amp;#039;y ai gagné beaucoup à tout décortiquer de la sorte, je vous souhaite bonne route pour la suite et… à bientôt peut-être, quelque part dans les ressources, sait-on jamais… &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>olivier tarasse</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Thu, 29 Jul 2010 19:35:11 +0200</pubDate>
        </item>
        <item>
            <title>Créer des images originales grâce aux coordonnées polaires</title>
            <link>http://ressources.mediabox.fr/tutoriaux/photoshop/abstrait</link>
            <description>&lt;div class=&quot;wrap_todo wrap_bg&quot; style=&quot;width:400px;&quot;&gt;
&lt;strong&gt;EN CHANTIER !&lt;/strong&gt;&lt;br/&gt;

Cette page n&amp;#039;est pas terminée et est en cours d&amp;#039;écriture.
&lt;/div&gt;
&lt;h1&gt;&lt;a name=&quot;creer_des_images_originales_grace_aux_coordonnees_polaires&quot; id=&quot;creer_des_images_originales_grace_aux_coordonnees_polaires&quot;&gt;Créer des images originales grâce aux coordonnées polaires&lt;/a&gt;&lt;/h1&gt;&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/pscs4.png?w=27&quot; alt=&quot;Compatible Photoshop CS4. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible Photoshop CS4. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par adribec (Adrien B), le 28 juillet 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Les coordonnées polaires peuvent donner des effets surprenants ! A partir d&amp;#039;une simple déformation, qu&amp;#039;on répète, qu&amp;#039;on répète … Nous verrons dans ce tutoriel, le principe de base, et les diverse amélioration et variations que l&amp;#039;on peut apporter.
&lt;/p&gt;
&lt;div class=&quot;wrap_prerequis&quot;&gt;
&lt;strong&gt;Prérequis&lt;/strong&gt;
&lt;p&gt;
Posséder des connaissances de bases sur Photoshop CS4&lt;br/&gt;

Un bon sens de l&amp;#039;esthétique ! 

&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;le_principe&quot; id=&quot;le_principe&quot;&gt;Le principe&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

L&amp;#039;avantage de cette technique, c&amp;#039;est qu&amp;#039;elle fonctionne avec n&amp;#039;importe quelle forme de base. Vous pouvez faire un trait, un rond, ou du gribouillage, le rendu est pratiquement pareil. Il n&amp;#039;y a donc pas besoin de s&amp;#039;appliquer. 
&lt;/p&gt;

&lt;p&gt;
Donc, ouvrez un nouveau document (fond blanc, 454&amp;times;340).
Pour commencer, on va utiliser une seule couleur, du noir. Et maintenant, gribouillez &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_mrgreen.gif&quot; class=&quot;middle&quot; alt=&quot;:mrgreen:&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;
&lt;div class=&quot;wrap_important wrap_bg&quot;&gt;
Attention a remplir suffisamment la zone de travail en élément, pour espérer obtenir le rendu complet, et pas seulement une partie
&lt;/div&gt;
&lt;p&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Voici mon œuvre &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_cool.gif&quot; class=&quot;middle&quot; alt=&quot;8-)&quot; /&gt; &lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/photoshop/abstrait/coordpol1.png?id=tutoriaux%3Aphotoshop%3Aabstrait&quot; class=&quot;media&quot; title=&quot;tutoriaux:photoshop:abstrait:coordpol1.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/photoshop/abstrait/coordpol1.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

Maintenant, il faut appliquer le filtre de déformation rectangulaire en polaire.
Ctrl + F pour le répéter 4-5 fois.
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/photoshop/abstrait/coordpol2.png?id=tutoriaux%3Aphotoshop%3Aabstrait&quot; class=&quot;media&quot; title=&quot;tutoriaux:photoshop:abstrait:coordpol2.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/photoshop/abstrait/coordpol2.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Et voila !!
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;commencer_a_controler_le_rendu&quot; id=&quot;commencer_a_controler_le_rendu&quot;&gt;Commencer à contrôler le rendu&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

C&amp;#039;est bien beau tout ça, mais c&amp;#039;est toujours pareil … Et bien non (Haha !)
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;la_quantite_d_encre&quot; id=&quot;la_quantite_d_encre&quot;&gt;La quantité &amp;quot;d&amp;#039;encre&amp;quot;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

(Le noir utilisé me fait penser à de l&amp;#039;encre, d&amp;#039;où le nom de quantité d&amp;#039;encre !).
&lt;/p&gt;

&lt;p&gt;
Nous avons déjà vu précédemment le principe, ainsi qu&amp;#039;il faut assez remplir la zone de travail pour avoir un bon rendu. Vous pouvez deviner que si elle n&amp;#039;est pas assez remplit, le rendu aura la même forme, mais sera beaucoup moins remplit. Cela peut donc être exploité ! 
&lt;/p&gt;

&lt;p&gt;
A gauche, le résultat avec peu de “gribouillage” (j&amp;#039;ai simplement fait un trait), à droite, plus de “gribouillage”.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/photoshop/abstrait/coordpol3.png?id=tutoriaux%3Aphotoshop%3Aabstrait&quot; class=&quot;media&quot; title=&quot;tutoriaux:photoshop:abstrait:coordpol3.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/photoshop/abstrait/coordpol3.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;  &lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/photoshop/abstrait/coordpol4.png?id=tutoriaux%3Aphotoshop%3Aabstrait&quot; class=&quot;media&quot; title=&quot;tutoriaux:photoshop:abstrait:coordpol4.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/photoshop/abstrait/coordpol4.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;les_couleurs&quot; id=&quot;les_couleurs&quot;&gt;Les couleurs&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Rien de plus simple, il suffit de gribouiller d&amp;#039;une autre couleur que le noir, et le tour est joué !
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;et_pour_le_blanc&quot; id=&quot;et_pour_le_blanc&quot;&gt;Et pour le blanc ?&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Il y a plusieurs façon. Au début j&amp;#039;ai demandé de gribouiller, mais moi j&amp;#039;ai pris garde sur mes modèle à ne pas toucher les bords de la zone de travail lors du “gribouillage” (Oui bon, pour celui avec beaucoup “d&amp;#039;encre” ce n&amp;#039;est pas très évident). 
&lt;/p&gt;

&lt;p&gt;
Vous remarquerez que la forme obtenu noir est uniquement au milieu du sujet, on ne retrouve pas de trace noir autour (Sauf mon modèle “Beaucoup d&amp;#039;encre”). En effet, plus on s&amp;#039;approche du bord, plus il y aura une teinte de la couleur du “gribouillage” autour du rendu. Et si on touche complètement TOUT le bord, ce ne sera pas une teinte légère de la couleur choisie, mais une teinte très très forte (Si bien qu&amp;#039;on ne peut plus distinguer la forme qu&amp;#039;on obtient normalement, on trouve un carré de notre couleur).
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/photoshop/abstrait/coordpol5.png?id=tutoriaux%3Aphotoshop%3Aabstrait&quot; class=&quot;media&quot; title=&quot;tutoriaux:photoshop:abstrait:coordpol5.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/photoshop/abstrait/coordpol5.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Voyez vous ? Ici j&amp;#039;ai uniquement mis du noir sur les bords. 
Le rendu ?
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/photoshop/abstrait/coordpol6.png?id=tutoriaux%3Aphotoshop%3Aabstrait&quot; class=&quot;media&quot; title=&quot;tutoriaux:photoshop:abstrait:coordpol6.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/photoshop/abstrait/coordpol6.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
*Retour au sujet principal* Ça alors ! Du blanc ! 
&lt;/p&gt;

&lt;p&gt;
Plus simple pour obtenir notre forme en blanc ?&lt;br/&gt;

Remplir la zone de travail en noir, et gribouiller en blanc, tout simplement &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_mrgreen.gif&quot; class=&quot;middle&quot; alt=&quot;:mrgreen:&quot; /&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;et_si_on_commencait_a_mettre_plusieurs_couleurs&quot; id=&quot;et_si_on_commencait_a_mettre_plusieurs_couleurs&quot;&gt;Et si on commençait à mettre plusieurs couleurs ?&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

En cours de rédaction …
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;conclusion&quot; id=&quot;conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
En cours de rédaction …
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;les_sources&quot; id=&quot;les_sources&quot;&gt;Les sources&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;wrap_download&quot;&gt;
Vous pouvez proposer au téléchargement tout document qui serait bienvenue pour le lecteur, par exemple le fichier .psd photoshop, le .fla pour flash, etc
&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;en_savoir_plus&quot; id=&quot;en_savoir_plus&quot;&gt;En savoir plus&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

En cours de rédaction …
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>Adrien</author>
        <category>tutoriaux:photoshop</category>
            <pubDate>Wed, 28 Jul 2010 19:35:28 +0200</pubDate>
        </item>
        <item>
            <title>Diffuser des événements</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2</link>
            <description>&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 01 juin 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;p&gt;

 
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h1&gt;&lt;a name=&quot;diffuser_des_evenements&quot; id=&quot;diffuser_des_evenements&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2/btealerte6_c.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2/btealerte6_c.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Hé oui, ne serait-ce que pour faire cette petite nouillerie, il nous faut un événement (diffusé par la classe &lt;code&gt;BoiteAlerte&lt;/code&gt; au clic sur son unique bouton).
Un événement qu&amp;#039;on écouterait comme tous les événements du monde as3 avec addEventListener :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bteDemo:Mv_BoiteAlerte=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;co1&quot;&gt;// [...]&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// associer un écouteur sur l'événement maison&lt;/span&gt;
bteDemo.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BoiteAlerte.&lt;span class=&quot;me1&quot;&gt;BT_CLICK&lt;/span&gt;,compte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// la fonction de rappel&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; compt:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=0;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; compte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	compt++;
	txtSortie.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Boite affichée &amp;quot;&lt;/span&gt;+compt+&lt;span class=&quot;st0&quot;&gt;&amp;quot; fois&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Si vous êtes encore là et que vous n&amp;#039;avez pas jeté l&amp;#039;éponge (le sac à dos et les croquenots), dites vous que la côte la plus raide est franchie. Diffuser un événement tient de la formalité.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Si je reprends la métaphore du début, il s&amp;#039;agit pour nous de faire en sorte que la boite “crie” un truc quand on clique sur le bouton. Elle criera “on a cliqué sur mon bouton OK”, nous n&amp;#039;aurons donc qu&amp;#039;à écouter cet événement, pour y “brancher” la fonction de notre choix, comme illustré au dessus.
&lt;/p&gt;

&lt;p&gt;
Crier un truc, plus académiquement dit c&amp;#039;est diffuser un événement, outre-atlantique diffuser c&amp;#039;est dispatch.&lt;br/&gt;

Faire diffuser un événement par un objet, c&amp;#039;est donc utiliser cette syntaxe :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;l_Objet.&lt;span class=&quot;me1&quot;&gt;dispatchEvent&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; ... &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Les points de suspension valant un événement &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Créer un événement, ça se fait à l&amp;#039;aide du mot clé new, comme toujours (puisque c&amp;#039;est un objet, puisque tout est Objet - POO on a dit).
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Event &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;nom_De_L_Evénement&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Dans le cas qui nous occupe il faut tout bonnement diffuser un événement maison au clic sur le bouton, donc dans la fonction &lt;code&gt;btOKQdClick&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; btOKQdClick&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ferme &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			ferme&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			dispatchEvent&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Event &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;BtClick&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
On choisit le nom qu&amp;#039;on veut, mais bien sûr, plus il sera parlant mieux ce sera.&lt;br/&gt;

On pourrait dès maintenant écouter cet événement :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;bteDemo.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;BtClick&amp;quot;&lt;/span&gt;,compte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;respecter_les_conventions_d_ecriture&quot; id=&quot;respecter_les_conventions_d_ecriture&quot;&gt;Respecter les conventions d&amp;#039;écriture&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

… mais puisque maintenant on joue dans la cours des grands (Si, si… Allez ! Un peu d&amp;#039;autosatisfaction bien mesurée de peut pas nuire &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;), on va faire les choses vraiment bien et respecter les standards ActionScript 3 qui veulent que tous les événements soient stockés dans des propriétés constantes de la classe liée à l&amp;#039;événement.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
En français courant : utiliser une variable globale publique constante (et statique, acceptez le comme tel, j&amp;#039;expliquerai ce qu&amp;#039;est ce mot &lt;code&gt;static&lt;/code&gt; &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt; en fin de parcours&lt;/a&gt;)
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteAlerte &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; BoiteModale &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; prompt:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;;
                &lt;span class=&quot;co1&quot;&gt;// ici la constante :&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;static&lt;/span&gt; const BT_CLICK:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;BtClick&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Et ben voilà, c&amp;#039;est tout. C&amp;#039;est fini, la classe est parfaitement fonctionnelle &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Bien entendu puisqu&amp;#039;on utilise la propriété BT_CLICK de la classe (dans l&amp;#039;écouteur), il faut l&amp;#039;importer :

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Interface&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BoitesModales&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BoiteAlerte&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Enregistrement de l&amp;#039;écouteur :&lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;bteDemo.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BoiteAlerte.&lt;span class=&quot;me1&quot;&gt;BT_CLICK&lt;/span&gt;,compte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;

&lt;br/&gt;

&lt;br/&gt;

&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;classe_eventdispatcher&quot; id=&quot;classe_eventdispatcher&quot;&gt;Classe EventDispatcher&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

C&amp;#039;est bien pratique de pouvoir aussi facilement diffuser des événements &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;&lt;br/&gt;

Le mérite en revient à la classe EventDispatcher (diffuseur d&amp;#039;événements chez Molière) dont la classe MovieClip hérite.&lt;br/&gt;

C&amp;#039;est le résultat d&amp;#039;une très longue lignée d&amp;#039;héritage. Allons voir &lt;a href=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/flash/display/MovieClip.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/flash/display/MovieClip.html&quot;  rel=&quot;nofollow&quot;&gt;ce qu&amp;#039;en raconte&lt;/a&gt; la doc :
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2/docheriteventdispatch.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aboitesmodales2&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2:docheriteventdispatch.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2/docheriteventdispatch.jpg?w=722&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;722&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Les flèches se lisent : hérite de…&lt;br/&gt;

MovieClip &lt;em&gt;hérite de&lt;/em&gt; Sprite  &lt;em&gt;qui hérite de&lt;/em&gt; DisplayObjectContainer  &lt;em&gt;qui hérite de&lt;/em&gt; InteractiveObject  &lt;em&gt;qui hérite de&lt;/em&gt; DisplayObject  &lt;em&gt;qui hérite de&lt;/em&gt; EventDispatcher  &lt;em&gt;qui hérite de&lt;/em&gt; Object. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
D&amp;#039;ailleurs si on clique sur EventDispatcher, la doc nous dresse la liste de toutes les classes qui en héritent directement, comme vous le voyez ça fait du monde, on va pouvoir en abuser de cette technique &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;&lt;br/&gt;

Qui râle qu&amp;#039;on n&amp;#039;y trouve pas MovieClip ?&lt;br/&gt;

Directement, j&amp;#039;ai dit.&lt;br/&gt;

MovieClip est l&amp;#039;arrière-arrière-petite fille de DisplayObject…&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Si vous prenez l&amp;#039;habitude d&amp;#039;aller régulièrement jeter un œil aux en têtes de la doc, vous vous y retrouverez très vite… &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;mise_en_œuvre_la_boite_ouinon&quot; id=&quot;mise_en_œuvre_la_boite_ouinon&quot;&gt;Mise en œuvre : la boite Oui/Non&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Pour vous faire la main, je vous laisse écrire la classe BoiteOuiNon. C&amp;#039;est une classe de base qui sera associée à des symboles contenant deux boutons (au lieu d&amp;#039;un, la belle affaire &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;) et un champ texte.&lt;br/&gt;

Chacun des boutons fermera la boite et la boite diffusera deux événements BTOUI_CLICK et BTNON_CLICK 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales#heritage_et_surcharge_1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Comme sur le swf d&amp;#039;introduction&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Et puis même, pour ceux qui ont envie de trainasser encore un peu en terrain apprivoisé et de jouer avec leurs nouveaux copains du pays de Poo, il y a l&amp;#039;idée de se faire une boite de saisie…&lt;br/&gt;

(Mais ça, c&amp;#039;est vraiment pour le plaisir de musarder encore un peu parce qu&amp;#039;il est rarissime d&amp;#039;avoir besoin d&amp;#039;une boite de saisie modale &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2/moboitesaisiecs3.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2/moboitesaisiecs3.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Ensuite nous reprendrons la route par le versant classes liées, où on ne rencontrera rien de bien neuf, si ce n&amp;#039;est… une surprise… &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;&lt;br/&gt;

Non, je ne dis pas ce que c&amp;#039;est, vous verrez bien. Ça n&amp;#039;a pas à voire avec les classes ce sera le bonus hors pistes.
&lt;/p&gt;
&lt;div class=&quot;wrap_download&quot;&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2/lesclasses.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2:lesclasses.zip&quot;&gt;Les classes&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2/moboitesmodalesdemocs3_b.fla&quot; class=&quot;media mediafile mf_fla&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2:moboitesmodalesdemocs3_b.fla&quot;&gt;Boites alerte et oui/non mise en œuvre&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2/moboitesaisiecs3_b.fla&quot; class=&quot;media mediafile mf_fla&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2:moboitesaisiecs3_b.fla&quot;&gt;Boite saisie mise en œuvre&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Les classes liées --&amp;gt;&lt;/a&gt;

&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>Nataly</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Mon, 26 Jul 2010 17:44:06 +0200</pubDate>
        </item>
        <item>
            <title>Visionneuse (#2) Finitions</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1</link>
            <description>&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 16 juin 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;p&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h1&gt;&lt;a name=&quot;visionneuse_2_finitions&quot; id=&quot;visionneuse_2_finitions&quot;&gt;Visionneuse (#2) Finitions&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;le_sens_de_defilement&quot; id=&quot;le_sens_de_defilement&quot;&gt;le sens de défilement&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Changer le sens de défilement, ce n&amp;#039;est pas sorcier : il suffit de décrémenter idxSup (idxSup–). Il y a différente façon de s&amp;#039;y prendre, toutes passeront par un test sur une variable précisant le sens… Les moins aguerris auront peut être l&amp;#039;idée de valoriser une variable sens avec une chaine (genre avant ou arrière) et d&amp;#039;écrire dans un if soit idxSup++, soit idxSup–. Pas mal, mais peut mieux faire. On va décider d&amp;#039;une propriété qui vaudra 1 ou -1, ainsi la seule ligne idxSup+=laPropSens; permettra-t-elle d&amp;#039;incrémenter ou de décrémenter selon la valeur de la proriété.&lt;br/&gt;

Il faut aussi faire attention à ce qui se passe quand tous les visuels ont défilé. Il faut  que idxSup vaille 1 quand on avance et le dernier numéro d&amp;#039;index quand on recule. Ça peut s&amp;#039;écrire comme ça :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;			idxSup+=_sens;
			&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sens==&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
				idxSup=idxSup&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;NumPhotoMax?&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:idxSup;
			&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
				idxSup=idxSup&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;?NumPhotoMax:idxSup;
			&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
			idxInf=idxTmp;&lt;/pre&gt;
&lt;p&gt;
&lt;span class=&quot;wrap_info&quot;&gt;
Si les opérateurs ternaires ne vous plaisent pas, ne vous privez pas de les remplacer par la structure de contrôle if…else
&lt;/span&gt;
&lt;/p&gt;

&lt;p&gt;
Tant qu&amp;#039;à faire, faisons en sorte de pouvoir préciser le sens à l&amp;#039;initialisation.&lt;br/&gt;

Un paramètre supplémentaire et facultatif dans le constructeur fera l&amp;#039;affaire. Je vous laisse écrire un couple d&amp;#039;accesseur pour la propriété sens.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;                &lt;span class=&quot;co1&quot;&gt;// [...]&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _sens:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
                &lt;span class=&quot;co1&quot;&gt;// Le constructeur, un sens par défaut&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTabVisuels:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;, pMasque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;,pSens:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
			NumPhotoMax=pTabVisuels.&lt;span class=&quot;me1&quot;&gt;length&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
			tabVisuels=pTabVisuels;
			&lt;span class=&quot;co1&quot;&gt;// &lt;/span&gt;
			_sens=pSens;
                        &lt;span class=&quot;co1&quot;&gt;// index image sup selon sens &lt;/span&gt;
			idxSup= pSens==&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;?&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:NumPhotoMax;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// [...]&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// Les accesseurs&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; sens&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pSens:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_sens=pSens;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;get&lt;/span&gt; sens&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; _sens;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// [...]&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
C&amp;#039;est parfait aussi longtemps qu&amp;#039;on le teste à l&amp;#039;initialisation, mais si nous vient l&amp;#039;idée d&amp;#039;installer sur le fla deux boutons pour changer le sens en cours de route :&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;300&quot; height=&quot;558&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/visiosenspasfini.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;300&quot; height=&quot;558&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/visiosenspasfini.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
… il y a un décalage, la commande n&amp;#039;est pas prise en compte tout de suite.&lt;br/&gt;

Je m&amp;#039;explique : l&amp;#039;enchainement des images sur la démo publiée c&amp;#039;est cabane, château, chemin. Si on modifie la propriété sens (à -1) pendant que la transition s&amp;#039;effectue de château à chemin, on aimerait voir château dès la transition suivante, or il faut attendre un tour de plus. C&amp;#039;est cabane qui s&amp;#039;affiche, ensuite seulement le défilement se fera à reculons.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
En effet, c&amp;#039;est bien gentil de modifier _sens via l&amp;#039;accesseur set, mais les valeurs de idxSup et idxInf ne seront modifiées qu&amp;#039;à la sortie de la fonction chargeVisuels, d&amp;#039;où le décalage. Il faut donc intervenir dans le setter afin de modifier certes la variable sens, mais aussi idxSup et idxInf.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; sens&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pSens:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; supTemp:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=idxInf+pSens;
			_sens=pSens;
&amp;nbsp;
			&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sens==&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
				idxSup=supTemp&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;NumPhotoMax?&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:supTemp;
			&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
				idxSup=supTemp&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;?NumPhotoMax:supTemp;
			&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;300&quot; height=&quot;558&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/visiosens.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;300&quot; height=&quot;558&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/visiosens.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;temps_de_pause&quot; id=&quot;temps_de_pause&quot;&gt;Temps de pause&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Plus rigolo : le temps d&amp;#039;exposition du visuel avant enchainement, ce que j&amp;#039;appelle temps de pause.&lt;br/&gt;

Tel qu&amp;#039;écrit, la transition se fait dès que la lecture du masque revient image 1. Si on veut un temps de pause il va s&amp;#039;agir, arrivé à la dernière image, d&amp;#039;arrêter la lecture et d&amp;#039;attendre le temps précisé avant de la relancer (la lecture).&lt;br/&gt;
 
Arrêter c&amp;#039;est stop() (wo ! la découverte &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_mrgreen.gif&quot; class=&quot;middle&quot; alt=&quot;:mrgreen:&quot; /&gt;)&lt;br/&gt;

Attendre avant d&amp;#039;invoquer une fonction il nous faut un objet Timer (&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/affichage/animation/neige_scintille_etc#la_classe_timer_approche&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:affichage:animation:neige_scintille_etc&quot;&gt;petit rappel ici&lt;/a&gt;)&lt;br/&gt;

Quant à la fonction invoquée le délai passé, on l&amp;#039;a déjà c&amp;#039;est marche.
&lt;/p&gt;

&lt;p&gt;
L&amp;#039;objet Timer va être déclaré en variable globale et privée
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;utils&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Timer&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;TimerEvent&lt;/span&gt;;&lt;/pre&gt;&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _tpsPause:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; tmPause:Timer=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Timer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_tpsPause,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
On a anticipé bien sûr une variable globale privée (&lt;code&gt;_tpsPause&lt;/code&gt;) pour le temps de pause, toute prête à être modifiée via accesseurs &lt;code&gt;tpsPause&lt;/code&gt;.&lt;br/&gt;

Dans le constructeur on va ajouter un écouteur à &lt;code&gt;tmPause&lt;/code&gt; et lui souscrire la fonction &lt;code&gt;marche&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;tmPause.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;TimerEvent.&lt;span class=&quot;me1&quot;&gt;TIMER&lt;/span&gt;,marche&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Voilà, il n&amp;#039;y aura plus qu&amp;#039;à appliquer la méthode &lt;code&gt;start&lt;/code&gt; à &lt;code&gt;tmPause&lt;/code&gt; pour remettre la visionneuse en route après un délai de deux secondes. On va le faire dans une fonction attendre :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; attendre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			masque.&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;j'attends&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			tmPause.&lt;span class=&quot;me1&quot;&gt;reset&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			tmPause.&lt;span class=&quot;kw3&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

Cette toute bête fonction &lt;code&gt;attendre&lt;/code&gt;, il ne nous reste plus qu&amp;#039;à l&amp;#039;appeler sur la dernière image du masque. Dit autrement : il faut ajouter du script sur la dernière image de masque…&lt;br/&gt;

Et hop ! On re-dégaine la fameuse addFrameScript.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTabVisuels:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;, pMasque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;,pSens:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;constructeur visio : &amp;quot;&lt;/span&gt; + pTabVisuels + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;masque : &amp;quot;&lt;/span&gt;+pMasque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			tmPause.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;TimerEvent.&lt;span class=&quot;me1&quot;&gt;TIMER&lt;/span&gt;,marche&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
			NumPhotoMax=pTabVisuels.&lt;span class=&quot;me1&quot;&gt;length&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
			tabVisuels=pTabVisuels;
			_sens=pSens;
			idxSup=pSens==&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;?&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:NumPhotoMax;
			masque=pMasque;
			masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
			masque.&lt;span class=&quot;kw3&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;co1&quot;&gt;// ajouter du code première et dernière image de masque&lt;/span&gt;
			masque.&lt;span class=&quot;me1&quot;&gt;addFrameScript&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0,chargeVisuels&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			masque.&lt;span class=&quot;me1&quot;&gt;addFrameScript&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;masque.&lt;span class=&quot;me1&quot;&gt;totalFrames&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,attendre&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;masque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			masque.&lt;span class=&quot;kw3&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
C&amp;#039;est un peu crétin de forcer le temps de pause sur 2 secondes, je vous laisse donc créer une propriété tpsPause d&amp;#039;un couple d&amp;#039;accesseurs :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _tpsPause:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;//[...]&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; tpsPause&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTpsPause:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_tpsPause=pTpsPause;
			tmPause.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;=_tpsPause;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;get&lt;/span&gt; tpsPause&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; _tpsPause;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Depuis le .fla on peut tester nos dernières sophistications.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// .fla&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; nouvelleVisionneuse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;// nouvelle instance initialisée avec le tableau et le masque&lt;/span&gt;
	visio=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tabPhotos,leMasque,-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	visio.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,marcheArret&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;co1&quot;&gt;// fixer le temps de pause&lt;/span&gt;
	visio.&lt;span class=&quot;me1&quot;&gt;tpsPause&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5000&lt;/span&gt;;
&amp;nbsp;
	addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;visio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
En testant en l&amp;#039;état on constate que la méthode arrêt semble ne pas toujours fonctionner : si on arrête la lecture en cliquant pendant le temps de pause, et bien… la lecture s&amp;#039;enchaine malgré tout.&lt;br/&gt;

Rien de plus normal : sur la dernière image tmPause est lancé, si on veut l&amp;#039;empêcher de faire son boulot et d&amp;#039;appeler la méthode marche après le délai, il faut l&amp;#039;arrêter :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; arret&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;arret&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			tmPause.&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			masque.&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;addframescript_deux_trois_choses_a_savoir&quot; id=&quot;addframescript_deux_trois_choses_a_savoir&quot;&gt;AddFrameScript deux trois choses à savoir&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On l&amp;#039;a dit et répété, la méthode addFrameScript n&amp;#039;est pas documentée, ce qui lui vaut mauvaise presse : est-ce bien sérieux ? Ne risque-t-elle pas de disparaître un jour sans préavis ?&lt;br/&gt;

Je n&amp;#039;en sais rien : j&amp;#039;ai bien des qualités (en tout premier lieu la modestie) mais je ne suis pas médium… En revanche je suis butée. J&amp;#039;ai donc pris le temps d&amp;#039;observer son comportement, &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/trucs_et_astuces/addframescript_non_documentee&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:trucs_et_astuces:addframescript_non_documentee&quot;&gt;et voici les conclusions surprenantes&lt;/a&gt; auxquelles je suis arrivée. Allez y jeter un coup d&amp;#039;œil avant de l&amp;#039;utiliser à nouveau
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;diffuser_un_evenement_image_suivante&quot; id=&quot;diffuser_un_evenement_image_suivante&quot;&gt;Diffuser un événement &amp;quot;image suivante&amp;quot;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Si on veut pouvoir l&amp;#039;utiliser avec suffisamment de souplesse cette visionneuse, il serait bon qu&amp;#039;elle diffuse pour le moins un événement au chargement de chaque nouvelle image, ne serait-ce que pour pouvoir adjoindre des commentaires aux photos, par exemple…
&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;300&quot; height=&quot;558&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/movisiolegende.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;300&quot; height=&quot;558&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/movisiolegende.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Du côté du .fla il faut :&lt;/strong&gt;&lt;br/&gt;

• Un champ texte dynamique sur le scenario, et un tableau pour stocker les chaines de commentaires.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; tabLegendes:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Cabane&amp;quot;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;Chateau&amp;quot;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;Chemin&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;

• Ecouter l&amp;#039;événement qu&amp;#039;on se propose d&amp;#039;ajouter à la classe pour écrire dans le champ texte. 
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; nouvelleVisionneuse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; leMasque:Mv_Masque0=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_Masque0&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	visio=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tabPhotos,leMasque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	visio.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,marcheArret&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class=&quot;co1&quot;&gt;// --- &amp;gt; Ecouter l(e futur) événement SUIVANT&lt;/span&gt;
	visio.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;VisioPazapa.&lt;span class=&quot;me1&quot;&gt;SUIVANT&lt;/span&gt;,imgSuivante&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	visio.&lt;span class=&quot;me1&quot;&gt;tpsPause&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;;
	&lt;span class=&quot;co1&quot;&gt;// ajouter à la liste d'afichage&lt;/span&gt;
	addChildAt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;visio,0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// la fonction de rappel&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; imgSuivante&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	txtLegende.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=tabLegendes&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;visio.&lt;span class=&quot;me1&quot;&gt;visuelCourant&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;strong&gt;Du côté de la classe&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Ce qui implique pour vous de modifier la classe afin qu&amp;#039;elle diffuse l&amp;#039;événement idoine et qu&amp;#039;elle expose une propriété &lt;code&gt;visuelCourant&lt;/code&gt; en lecture seule.&lt;br/&gt;

J&amp;#039;ai bien dit “ce qui implique &lt;em&gt;pour vous&lt;/em&gt;“… Puisque tout ça vous savez le faire ! J&amp;#039;avais prévenu, c&amp;#039;est une excuse à réemployer ce qui a été vu jusqu&amp;#039;ici, une excuse pour jouer avec tout ce petit monde fraichement rencontré &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;.&lt;br/&gt;

Diffuser un événement &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;on l&amp;#039;a fait là&lt;/a&gt;.&lt;br/&gt;

Une propriété en lecture seule c&amp;#039;est &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1#accesseurs_settergetter&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt; un accesseur get&lt;/a&gt; sans le set, voilà tout &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;&lt;br/&gt;

Et dans l&amp;#039;élan vous pourrez, si le cœur vous en dit, ajouter un événement diffusé lorsque la visionneuse atteint le dernier visuel. Ça permettra, le cas échéant, d&amp;#039;arrêter le défilement en fin de lecture - depuis le .fla.
&lt;/p&gt;

&lt;p&gt;

Allez je vous laisse, je vais chercher les cafés, tout le monde en veut ? 
&lt;/p&gt;
&lt;div class=&quot;wrap_download&quot;&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1/visiototal.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1:visiototal.zip&quot;&gt;zip : les sources complètes&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;ecouter_l_affichage&quot; id=&quot;ecouter_l_affichage&quot;&gt;Ecouter l&amp;#039;affichage&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Oui, il y avait un piège… Rhooo… A peine, une petite chose à réfléchir pour que l&amp;#039;événement SUIVANT soit diffusé dès le chargement.&lt;br/&gt;

Si vous l&amp;#039;avez diffusé à l&amp;#039;entrée de chargeVisuels et rien modifié d&amp;#039;autre, forcément il semble n&amp;#039;être diffusé qu&amp;#039;au deuxième passage dans la fonction. Regardons le code du fla :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;        visio=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tabPhotos,leMasque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
	visio.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;VisioPazapa.&lt;span class=&quot;me1&quot;&gt;SUIVANT&lt;/span&gt;,imgSuivante&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
	addChildAt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;visio,0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Première ligne reproduite : on crée une instance, donc le constructeur est sollicité et la fonction &lt;code&gt;chargeVisuels&lt;/code&gt; invoquée. Elle diffuse bien l&amp;#039;événement, mais on ne l&amp;#039;écoute pas encore…&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Pour régler le problème il suffit de passer dans &lt;code&gt;chargeVisuels&lt;/code&gt; après avoir souscrit l&amp;#039;écouteur, au addChild par exemple &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt; Et c&amp;#039;est là qu&amp;#039;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales#proprietes_stage_root_et_parent_d_une_instance&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;on se souvient de addedToStage&lt;/a&gt; diffusé par les DisplayObject quand ils sont ajoutés à la liste d&amp;#039;affichage.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTabVisuels:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;, pMasque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;,pSens:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
			addEventListener&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Event.&lt;span class=&quot;me1&quot;&gt;ADDED_TO_STAGE&lt;/span&gt;,chargePhotos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; chargePhotos&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event=&lt;span class=&quot;kw2&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;chargePhotos &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			dispatchEvent&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Event &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;suivant&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Et par la même occasion plus utile d&amp;#039;appeler &lt;code&gt;chargeVisuels&lt;/code&gt;. Que vous ayez utilisé &lt;code&gt;chargeVisuels()&lt;/code&gt; ou &lt;code&gt;gotoAndStop(1)&lt;/code&gt;, vous pouvez supprimer cette ligne.
&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;mais_du_coup&quot; id=&quot;mais_du_coup&quot;&gt;Mais… Du coup…&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Ne vous y trompez pas: Ronchon ne ronchonne pas il se demande, nuance…
&lt;/p&gt;

&lt;p&gt;
L&amp;#039;œil rivé aux deux exemples de classes document du chapitre précédent, il se dit que somme toute… c&amp;#039;est la même structure qu&amp;#039;une classe “tout court”.&lt;br/&gt;

Bien vu &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt; La seule différence entre une classe de document et une classe que j&amp;#039;ai dite classique en intro (souvenez vous c&amp;#039;était il y a longtemps…) c&amp;#039;est le contexte dans laquelle on va l&amp;#039;utiliser. Pour pouvoir l&amp;#039;associer à un clip ou à un fla (ce qui revient au même, maintenant vous n&amp;#039;êtes plus dupes), il convient seulement qu&amp;#039;elle étende MovieClip ou Sprite.&lt;br/&gt;

Pour peu qu&amp;#039;elle ne fasse pas référence à des objets (clips, champ texte…) présupposés sur le scénario, rien n&amp;#039;empêche d&amp;#039;utiliser une classe originellement conçue en tant que classe de document, pour instancier un objet.&lt;br/&gt;

On ne l&amp;#039;associe à rien, on invoque son constructeur à l&amp;#039;aide de l&amp;#039;opérateur new. Testez donc avec la classe issue de la doc :&lt;code&gt; ColorTransformExample.as&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; ct:ColorTransformExample=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; ColorTransformExample&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ct&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; ct2:ColorTransformExample=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; ColorTransformExample&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ct2.&lt;span class=&quot;me1&quot;&gt;x&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;;
addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ct2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Vous obtenez deux instances de ColorTransformExample, chacune accepte le clic et se modifie de la couleur… Mais seulement elle…&lt;br/&gt;

Quand la classe était associée à MainTimeline, this c&amp;#039;était tout le scénario. Maintenant this c&amp;#039;est l&amp;#039;instance.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;page suivante --&amp;gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>Nataly</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Mon, 26 Jul 2010 17:33:39 +0200</pubDate>
        </item>
        <item>
            <title>Classe externe : une visionneuse (#1)</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse</link>
            <description>&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 12 juin 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h1&gt;&lt;a name=&quot;classe_externe_une_visionneuse_1&quot; id=&quot;classe_externe_une_visionneuse_1&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Nous voici bientôt arrivés au terme de la randonnée au pays de Poo, et ce nouveau chapitre va être une excellente excuse à mettre en œuvre tout ce qui a été vu jusqu&amp;#039;alors.&lt;br/&gt;

L&amp;#039;idée c&amp;#039;est de construire une classe visionneuse ou diaporama, ce qui revient au même…&lt;br/&gt;
 Justement peut-être nos rangs sont ils grossis de quelques nouveaux arrivés via un moteur de recherche. Bienvenue à vous, sachez seulement que je considère comme acquis (ou en voie d&amp;#039;acquisition, on s&amp;#039;énerve pas) les points précédemment développés.
&lt;/p&gt;
&lt;div class=&quot;wrap_prerequis&quot;&gt;
Je ne développerai pas :&lt;br/&gt;

• Ce qu&amp;#039;est une classe, comment ça se construit et les syntaxes dédiées&lt;br/&gt;

• Comment définir des méthodes, un constructeur ou des accesseurs&lt;br/&gt;

Je vous invite à vous reporter aux pages précédentes pour ces différents points.
&lt;p&gt;
Il vous faut aussi savoir appliquer dynamiquement un masque à un clip, et lui appliquer un flou.&lt;br/&gt;

On utilisera les classes loader et loaderInfo pour charger les images, mais ça n&amp;#039;a pas à voire directement avec la visionneuse, vous pouvez vous contenter d&amp;#039;admettre les quelques lignes concernées si d&amp;#039;aventure vous n&amp;#039;en êtes pas familiers.

&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;intro&quot; id=&quot;intro&quot;&gt;intro&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;320&quot; height=&quot;558&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/demovisio2.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;320&quot; height=&quot;558&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/demovisio2.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Ça, c&amp;#039;est ce qu&amp;#039;on imagine obtenir à terme : des visuels qui s&amp;#039;enchainent avec une transition animée via un masque &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/affichage/animation/lesmasques/masquecode#une_visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:affichage:animation:lesmasques:masquecode&quot;&gt;selon le principe illustré là&lt;/a&gt;. Vous le constatez, les images sont affichées en boucle, mais la première ne l&amp;#039;est qu&amp;#039;une fois.
&lt;/p&gt;

&lt;p&gt;

&lt;span class=&quot;wrap_info&quot;&gt;
 Les boutons qui changent le sens de défilement ne font pas partie de la classe mais du fichier de mise en œuvre qui permet d&amp;#039;utiliser l&amp;#039;objet Visionneuse, même chose pour la légende.
&lt;/span&gt;
&lt;/p&gt;

&lt;p&gt;

La classe ne fait rien d&amp;#039;autre, donc, qu&amp;#039;afficher des visuels dans un clip vide et leur appliquer un masque. On ne va pas créer un symbole de bibliothèque vide juste pour lui associer une classe… On pourrait, mais &amp;#039;faut rien exagérer non plus, il suffit que la classe s&amp;#039;en charge. Nous pouvons donc rêver d&amp;#039;une classe qu&amp;#039;on utiliserait comme suit :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// .fla&lt;/span&gt;
&amp;nbsp;
visio=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Visionneuse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
visio.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,marcheArret&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;visio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Elle mettrait à notre disposition une méthode marche, une méthode arrêt (ainsi que diverses petites choses qu&amp;#039;on inventera en cours de route), et n&amp;#039;aurait besoin pour fonctionner que d&amp;#039;un clip (animation de transition) et d&amp;#039;une série de visuels qu&amp;#039;on lui passerait sous forme d&amp;#039;un tableau. Du coup on l&amp;#039;initialiserait à la construction comme suit :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; visio:Visionneuse=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Visionneuse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tabPhotos,leMasque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Ce qui est sympa avec le code, c&amp;#039;est que du rêve à la réalité il n&amp;#039;y a qu&amp;#039;un clavier, dont je vous propose de vous saisir sans plus attendre. C&amp;#039;est parti pour la visionneuse !
&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;cote_.fla&quot; id=&quot;cote_.fla&quot;&gt;Côté .fla&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Il nous faudra un fichier .fla de mise en œuvre et un fichier .as pour la classe, les deux étant considérés comme enregistrés dans le même répertoire.&lt;br/&gt;

Créons le fla pour commencer.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;charger_les_images&quot; id=&quot;charger_les_images&quot;&gt;Charger les images&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

On sera amenés à utiliser la classe Visionneuse soit avec des visuels sous forme de symboles de la bibliothèque, soit sous forme de fichiers externes. Alors pour le plaisir de frimer qu&amp;#039;on sait tout faire, je vous propose de faire un mixte : charger une première image qui sera un symbole de bibli (la page de garde), les autres seront des images externes.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;

Mon point de vue étant qu&amp;#039;il vaut mieux écrire cinq fois dix lignes en les testant au fur et à mesure, qu&amp;#039;écrire une fois cinquante lignes qui plantent à l&amp;#039;exé (et qu&amp;#039;on sait même pas où, et qu&amp;#039;on se retrouve à poster deux écrans de code dans le forum sur le mode “au secours ça marche pô chépa pourquoi…” &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;) on va procéder par étapes en vérifiant régulièrement que “jusque là, ça va…”
&lt;/p&gt;

&lt;p&gt;
Avant même d&amp;#039;attaquer la classe, occupons nous donc de fabriquer un tableau qui contiendra les visuels : un symbole de bibliothèque et des photos externes.
&lt;/p&gt;

&lt;p&gt;
Je vous laisse fabriquer le clip pour le premier visuel, pensez à cocher la case exporter pour actionScript (pour en créer une instance dynamiquement), de mon côté je le nomme &lt;code&gt;Mv_Photo0&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Charger les fichiers et fabriquer le tableau&lt;/strong&gt;&lt;br/&gt;

On considère ici des images dans le même répertoire que les deux fichiers .fla et .as, nommées P1.jpg, P2.jpg, P3.jpg…
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// .fla&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; ldrFichier:Loader;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; ldrInfo:LoaderInfo;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; tabPhotos:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; nbPhotos:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; visio:VisioPazapa;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; visuelDep:Mv_Photo0= &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_Photo0&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
tabPhotos.&lt;span class=&quot;kw3&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;visuelDep&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
charge&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;P1.jpg&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; charge&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pNom:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	ldrFichier= &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Loader&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	ldrInfo=ldrFichier.&lt;span class=&quot;me1&quot;&gt;contentLoaderInfo&lt;/span&gt;;
	ldrInfo.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Event.&lt;span class=&quot;me1&quot;&gt;COMPLETE&lt;/span&gt;, Fini&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	ldrFichier.&lt;span class=&quot;kw3&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; URLRequest&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pNom&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; Fini&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// remplir le tableau et compter le nb d'éléments&lt;/span&gt;
	&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; nb:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=tabPhotos.&lt;span class=&quot;kw3&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;target&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;loader&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nb&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;=nbPhotos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;co1&quot;&gt;// charger le suivant&lt;/span&gt;
		charge&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;P&amp;quot;&lt;/span&gt;+nb+&lt;span class=&quot;st0&quot;&gt;&amp;quot;.jpg&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
               &lt;span class=&quot;co1&quot;&gt;// On a tout &lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;prêt à déclencher les hostilités : &amp;quot;&lt;/span&gt;+ tabPhotos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code trace&quot;&gt;prêt à déclencher les hostilités : [object Mv_Photo0],[object Loader],[object Loader],[object Loader]&lt;/pre&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;fabriquer_le_masque&quot; id=&quot;fabriquer_le_masque&quot;&gt;Fabriquer le masque&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

La technique mise en œuvre pour la transition c&amp;#039;est une animation, un clip utilisé comme masque pour dévoiler la photo suivante. Vous pouvez réutiliser celui que vous avez construit &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/affichage/animation/lesmasques/masquecode#une_visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:affichage:animation:lesmasques:masquecode&quot;&gt;ici&lt;/a&gt;, pensez seulement à supprimer les images après les interpolations qui n&amp;#039;étaient destinées qu&amp;#039;à permettre un temps d&amp;#039;exposition entre deux photos, on va bien sûr se faire une joie de coder une propriété temps_de_pause &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/animationmasque.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Avisionneuse&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse:animationmasque.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/animationmasque.jpg?w=430&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;430&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;la_classe&quot; id=&quot;la_classe&quot;&gt;La Classe&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;preparer_la_classe_et_verifier_que_jusque_la_ca_va&quot; id=&quot;preparer_la_classe_et_verifier_que_jusque_la_ca_va&quot;&gt;Préparer la classe et vérifier que &amp;quot;jusque là, ça va&amp;quot;.&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

On a tout ce qu&amp;#039;il faut pour agencer les premières briques de notre gros lego perso. Je vous laisse construire la structure de base de la classe : un constructeur qui trace ses deux paramètres (&lt;code&gt;pTabVisuels&lt;/code&gt;, et &lt;code&gt;pMasque&lt;/code&gt;) et les deux méthodes &lt;code&gt;marche&lt;/code&gt; et &lt;code&gt;arret&lt;/code&gt;.&lt;br/&gt;

Ici elle se nomme &lt;code&gt;VisioPazapa&lt;/code&gt;, faites bien comme vous voulez de votre côté.  
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// .as&lt;/span&gt;
&amp;nbsp;
package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; VisioPazapa &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTabVisuels:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;, pMasque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;constructeur visio : &amp;quot;&lt;/span&gt; + pTabVisuels + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;masque : &amp;quot;&lt;/span&gt;+pMasque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; marche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Marche&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; arret&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Arrêt&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
… et on vérifie immédiatement que tout se déroule comme prévu : une fonction &lt;code&gt;nouvelleVisionneuse&lt;/code&gt; (appelée dans &lt;code&gt;fini&lt;/code&gt;) qui crée et ajoute une instance de notre classe toute neuve.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// .fla&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; ldrFichier:Loader;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; ldrInfo:LoaderInfo;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; tabPhotos:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; nbPhotos:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// déclarer un objet VisioPazapa&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; visio:VisioPazapa;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; visuelDep:Mv_Photo0= &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_Photo0&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
tabPhotos.&lt;span class=&quot;kw3&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;visuelDep&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; i:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;; i&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;=nbPhotos; i++&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	ldrFichier= &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Loader&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	ldrInfo=ldrFichier.&lt;span class=&quot;me1&quot;&gt;contentLoaderInfo&lt;/span&gt;;
	ldrInfo.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Event.&lt;span class=&quot;me1&quot;&gt;COMPLETE&lt;/span&gt;, fini&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	ldrFichier.&lt;span class=&quot;kw3&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; URLRequest&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;P&amp;quot;&lt;/span&gt;+i+&lt;span class=&quot;st0&quot;&gt;&amp;quot;.jpg&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; fini&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; nb:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=tabPhotos.&lt;span class=&quot;kw3&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;target&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;loader&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nb&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;nbPhotos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;prêt à déclencher les hostilités : &amp;quot;&lt;/span&gt; +tabPhotos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
                &lt;span class=&quot;co1&quot;&gt;// création de la visionneuse&lt;/span&gt;
		nouvelleVisionneuse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// &lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; nouvelleVisionneuse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// créer un objet Mv_Masque0&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; leMasque:Mv_Masque0=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_Masque0&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class=&quot;co1&quot;&gt;// nouvelle instance initialisée avec le tableau et le masque&lt;/span&gt;
	visio=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tabPhotos,leMasque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class=&quot;co1&quot;&gt;// ajouter à la liste d'afichage&lt;/span&gt;
	addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;visio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code trace&quot;&gt;prêt à déclencher les hostilités : [object Mv_Photo0],[object Loader],[object Loader],[object Loader]
constructeur visio : [object Mv_Photo0],[object Loader],[object Loader],[object Loader]
masque : [object Mv_Masque0]&lt;/pre&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;ajouter_le_masque&quot; id=&quot;ajouter_le_masque&quot;&gt;Ajouter le masque&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Pas très visuel tout ça… Oui on dispose bien de tout l&amp;#039;attirail nécessaire : un clip futur masque et un tableau d&amp;#039;images, mais bon… on en fait quoi ?&lt;br/&gt;

Dans un premier temps on ajoute le masque, ensuite on s&amp;#039;occupera des couples de visuels. 
&lt;/p&gt;

&lt;p&gt;

Comme on imagine bien qu&amp;#039;on aura besoin du masque et du tableau d&amp;#039;un peu partout dans la classe (pas uniquement depuis le constructeur à l&amp;#039;initialisation), on sort deux globales privées : &lt;code&gt;masque&lt;/code&gt; et &lt;code&gt;tabVisuels&lt;/code&gt;. On applique un flou au masque, on l&amp;#039;ajoute à la liste d&amp;#039;affichage.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BlurFilter&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BitmapFilterQuality&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; VisioPazapa &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; tabVisuels:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; masque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTabVisuels:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;, pMasque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;constructeur visio : &amp;quot;&lt;/span&gt; + pTabVisuels + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;masque : &amp;quot;&lt;/span&gt;+pMasque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			tabVisuels=pTabVisuels;
			masque=pMasque;
			masque.&lt;span class=&quot;kw3&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
			addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;masque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Ça c&amp;#039;est fait.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Qu&amp;#039;on prenne soin d&amp;#039;arrêter la lecture du clip masque dès tout de suite ça ne vous surprend pas, en revanche que j&amp;#039;utilise un gotoAndStop(2), là vous vous dites : elle fatigue la malheureuse !…&lt;br/&gt;

Et bien non ! Pour l&amp;#039;instant le stop que vous avez probablement écrit convient tout à fait, mais plus tard il risque de nous envoyer droit dans le mur… On y reviendra… (suspens… tada ! &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_biggrin.gif&quot; class=&quot;middle&quot; alt=&quot;:D&quot; /&gt;) 
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;afficher_les_visuels&quot; id=&quot;afficher_les_visuels&quot;&gt;Afficher les visuels&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Le masque c&amp;#039;est fait, il ne reste plus qu&amp;#039;à afficher une paire de visuels, un pour le fond, un autre qui sera dévoilé (masqué par &lt;code&gt;masque&lt;/code&gt;). On va s&amp;#039;en débrouiller dans une fonction &lt;code&gt;chargeVisuels&lt;/code&gt;, appelée dans le constructeur.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTabVisuels:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;, pMasque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			tabVisuels=pTabVisuels;
			masque=pMasque;
			masque.&lt;span class=&quot;kw3&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
			addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;masque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class=&quot;co1&quot;&gt;// les visuels&lt;/span&gt;
                        chargeVisuels&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;strong&gt;La fonction chargeVisuels&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
C&amp;#039;est le même principe que &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/affichage/animation/lesmasques/masquecode#une_visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:affichage:animation:lesmasques:masquecode&quot;&gt;détaillé ici&lt;/a&gt;, je ne recommence pas ^^
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; chargeVisuels&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; idxTmp:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=idxSup;
&amp;nbsp;
			&lt;span class=&quot;kw3&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
				removeChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;photoFond&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
				removeChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;photoRecouvre&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;Error&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;//au premier passage idxSup = 1 et idxInf = 0;&lt;/span&gt;
			photoRecouvre=tabVisuels&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;idxSup&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
			photoFond=tabVisuels&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;idxInf&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
			photoRecouvre.&lt;span class=&quot;me1&quot;&gt;mask&lt;/span&gt;=_masque;
			photoRecouvre.&lt;span class=&quot;me1&quot;&gt;cacheAsBitmap&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;;
			addChildAt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;photoRecouvre,0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			addChildAt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;photoFond,0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
                        &lt;span class=&quot;co1&quot;&gt;// incrémenter pour le prochain passage&lt;/span&gt;
                        idxSup++;
                        &lt;span class=&quot;co1&quot;&gt;// idxSup vaut 1 si supérieur à numPhotoMax &lt;/span&gt;
			idxSup=idxSup&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;numPhotoMax?&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:idxSup;
			idxInf=idxTmp;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Bien sûr, il faut avoir déclaré et valorisé les variables :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; idxSup:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; idxInf:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=0;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; numPhotoMax:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; photoFond:DisplayObject;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; photoRecouvre:DisplayObject;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;//[.....]&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTabVisuels:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;, pMasque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;constructeur visio : &amp;quot;&lt;/span&gt; + pTabVisuels + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;masque : &amp;quot;&lt;/span&gt;+pMasque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			NumPhotoMax=pTabVisuels.&lt;span class=&quot;me1&quot;&gt;length&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;//[.....]&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
… et avoir importé la classe.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;DisplayObject&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
On devine bien le visuel d&amp;#039;index 1 derrière l&amp;#039;instance de &lt;code&gt;Mv_Photo0&lt;/code&gt;.&lt;br/&gt;

 
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/movisioe1.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Avisionneuse&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse:movisioe1.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/movisioe1.jpg?w=304&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;304&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;la_transition&quot; id=&quot;la_transition&quot;&gt;La transition&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

C&amp;#039;est le moment de faire en sorte que les méthodes &lt;code&gt;marche&lt;/code&gt; et &lt;code&gt;arrêt&lt;/code&gt; fassent autre chose que tracer une bête ligne.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; marche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			masque.&lt;span class=&quot;kw3&quot;&gt;play&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; arret&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			masque.&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Dans l&amp;#039;absolu, il suffit maintenant d&amp;#039;ajouter un écouteur à &lt;code&gt;visio&lt;/code&gt; et d&amp;#039;écrire une jolie bascule :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; nouvelleVisionneuse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	visio=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tabPhotos,leMasque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	visio.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,marcheArret&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;visio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; marcheArret&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;visio.&lt;span class=&quot;me1&quot;&gt;enMarche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		visio.&lt;span class=&quot;me1&quot;&gt;arret&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		visio.&lt;span class=&quot;me1&quot;&gt;marche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Râle pas Ronchon ! Non il n&amp;#039;y a pas de propriété &lt;code&gt;enMarche&lt;/code&gt; définie dans la classe, mais il faut bien anticiper : puisqu&amp;#039;il est évident qu&amp;#039;on en aura besoin on considère qu&amp;#039;elle existe et, tout de suite derrière, on file dans la classe l&amp;#039;ajouter d&amp;#039;un couple d&amp;#039;accesseurs &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1#accesseurs_settergetter&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;comme on sait les faire.&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; enMarche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pB:&lt;span class=&quot;kw3&quot;&gt;Boolean&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_enMarche=pB;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;get&lt;/span&gt; enMarche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;Boolean&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; _enMarche;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Avec la globale :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _enMarche:&lt;span class=&quot;kw3&quot;&gt;Boolean&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Puis on s&amp;#039;occupe de modifier la valeur de cette variable dans les méthodes &lt;code&gt;marche&lt;/code&gt; et &lt;code&gt;arret&lt;/code&gt; :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; marche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event=&lt;span class=&quot;kw2&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;marche&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			masque.&lt;span class=&quot;kw3&quot;&gt;play&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			_enMarche=&lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; arret&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;arret&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			masque.&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			_enMarche=&lt;span class=&quot;kw2&quot;&gt;false&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;300&quot; height=&quot;500&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/movisioe2.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;300&quot; height=&quot;500&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/movisioe2.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;

Et là, youpi ! Ça dévoile &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;enchainer_les_images&quot; id=&quot;enchainer_les_images&quot;&gt;Enchainer les images&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

La belle affaire… Ce qu&amp;#039;on veut c&amp;#039;est qu&amp;#039;à chaque fois que la lecture du masque boucle (revient image 1), un nouveau couple d&amp;#039;image soit chargé… 
Il faudrait un petit script image 1… il faudrait ajouter à l&amp;#039;instance &lt;code&gt;masque&lt;/code&gt;, image 1, un script qui appèlerait &lt;code&gt;chargeVisuels&lt;/code&gt;… &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_idea.gif&quot; class=&quot;middle&quot; alt=&quot;:idea:&quot; /&gt; ! addFrameScript, bien sûr.&lt;br/&gt;

En se souvenant que la première image est numérotée zéro, ça donne :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;  masque.&lt;span class=&quot;me1&quot;&gt;addFrameScript&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0,chargeVisuels&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
On ajoute la ligne dans le constructeur.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; VisioPazapa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTabVisuels:&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;, pMasque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			NumPhotoMax=pTabVisuels.&lt;span class=&quot;me1&quot;&gt;length&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
			tabVisuels=pTabVisuels;
			masque=pMasque;
			masque.&lt;span class=&quot;kw3&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
			&lt;span class=&quot;co1&quot;&gt;// ajouter du code image 1 de masque&lt;/span&gt;
			masque.&lt;span class=&quot;me1&quot;&gt;addFrameScript&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0,chargeVisuels&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;masque&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
                        chargeVisuels&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Et c&amp;#039;est là qu&amp;#039;on est content d&amp;#039;avoir anticipé le gotoAndStop(2).&lt;br/&gt;

Hé oui, la méthode addFrameScript recèle bien des surprises quand on l&amp;#039;applique à une image de clip qui se trouve être l&amp;#039;image courante… Je ne vous cache  pas que j&amp;#039;ai bien failli y laisser mon intégrité mentale (je synthétiserai plus loin). Pour éviter de nous compliquer la vie, avoir pris soin d&amp;#039;arrêter la tête de lecture image deux, est une ruse qui vaut ce qu&amp;#039;elle vaut, mais garantit un déroulement des choses sur lequel on a vraiment la main &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_cool.gif&quot; class=&quot;middle&quot; alt=&quot;8-)&quot; /&gt;&lt;br/&gt;

Du coup, soit on appelle &lt;code&gt;chargeVisuels&lt;/code&gt; comme ci-dessus, soit on renvoie la tête de lecture image 1 et la fonction &lt;code&gt;chargeVisuels&lt;/code&gt; fraichement associée est invoquée (c&amp;#039;est la version des sources).
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;masque.&lt;span class=&quot;kw3&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Et voilà une visionneuse, spartiate, mais tout à fait fonctionnelle… 
&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;600&quot; height=&quot;500&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/movisioe1.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;600&quot; height=&quot;500&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/movisioe1.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Bien sûr on peut souhaiter quelques sophistications supplémentaires : changer le sens de défilement, paramétrer le temps de pause entre deux visuels, atteindre directement un visuel, disposer d&amp;#039;événements pour intercepter le moment où le diaporama boucle, où le changement d&amp;#039;image à lieu…
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;page suivante --&amp;gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;wrap_download&quot;&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/visioetape1.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse:visioetape1.zip&quot;&gt;zip : fla/as &lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse/jpg.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse:jpg.zip&quot;&gt;zip : les trois jpg&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>Nataly</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Mon, 26 Jul 2010 17:32:12 +0200</pubDate>
        </item>
        <item>
            <title>Classe de document</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc</link>
            <description>&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 08 juin 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h1&gt;&lt;a name=&quot;classe_de_document&quot; id=&quot;classe_de_document&quot;&gt;Classe de document&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Et nous voilà  arrivés à l&amp;#039;incontournable classe de document. Vous la connaissez déjà c&amp;#039;est sûr, ne serait-ce que de réputation, on en voit partout, à commencer par la doc.&lt;br/&gt;

Rassurez vous, ça va aller vite, on a déjà quasi tout vu quant aux classes, il ne reste que quelques point spécifiques à ce cadre d&amp;#039;utilisation à préciser. 
&lt;/p&gt;

&lt;p&gt;
Commençons par le début, il s&amp;#039;agit donc une classe destinée à être associée, non pas à un symbole, comme nous l&amp;#039;avons fait jusqu&amp;#039;alors mais au fichier (document) .fla lui même.&lt;br/&gt;

Dire “associer une classe au fichier” c&amp;#039;est un abus de langage, en vrai c&amp;#039;est “associer une classe au &amp;#039;clip racine&amp;#039; de l&amp;#039;animation” qu&amp;#039;il faudrait dire. Je m&amp;#039;explique :&lt;br/&gt;

Il ne faut pas perdre de vue que le scénario principal n&amp;#039;est en fin de compte qu&amp;#039;un gros clip qui constitue l&amp;#039;animation elle même. Un gros clip donc, qui en contient d&amp;#039;autres ainsi que divers éléments (composants, champs texte, formes…). C&amp;#039;est ce clip qui vaut &lt;code&gt;this&lt;/code&gt; (depuis une image du scénario principal) et c&amp;#039;est toujours ce clip qui est renvoyé par la propriété &lt;code&gt;root&lt;/code&gt; de n&amp;#039;importe quel objet de l&amp;#039;animation. C&amp;#039;est un clip unique, une instance de &lt;code&gt;MainTimeline&lt;/code&gt;. Tracez &lt;code&gt;this&lt;/code&gt; si vous voulez vérifier.&lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code trace&quot;&gt;[object MainTimeline]&lt;/pre&gt;
&lt;p&gt;
Quand une animation (.swf) est lue dans le lecteur, ce clip scénario principal (mainTimeline) est ajouté à la scène (stage).&lt;br/&gt;

D&amp;#039;ailleurs vous pouvez le supprimer de la liste d&amp;#039;affichage :

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;removeChild&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

Ça ne sert à rien d&amp;#039;autre que tranquilliser les St Thomas &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/arboswf.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aclassedoc&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc:arboswf.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/arboswf.jpg?w=541&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;541&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
• &lt;strong&gt;Au même titre qu&amp;#039;on peut associer une classe à un clip de bibliothèque, on peut associer une classe au&lt;/strong&gt; gros clip &lt;strong&gt;scénario-principal&lt;/strong&gt; (main timeline en anglais). Cette casse répondra aux mêmes exigences syntaxiques que n&amp;#039;importe quelle classe et devra étendre la classe MovieClip ou Sprite selon que nous aurons recours ou non aux méthodes spécifiques de gestion de scénario ( stop, play…).
&lt;/p&gt;

&lt;p&gt;

• Au même titre que, comme nous l&amp;#039;avons vu précédemment, tout ce qui pourrait s&amp;#039;écrire dans la première image d&amp;#039;un clip peut s&amp;#039;écrire dans une classe associée, &lt;strong&gt;tout ce qui peut s&amp;#039;écrire dans la première image du scénario principal peut être écrit dans sa classe associée&lt;/strong&gt; en tant que classe du document.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;utiliser_les_exemples_de_la_doc&quot; id=&quot;utiliser_les_exemples_de_la_doc&quot;&gt;Utiliser les exemples de la doc&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Je vous propose d&amp;#039;expérimenter le principe à partir d&amp;#039;un cas fréquent : un paquetage illustrant un point quelconque de la documentation, ensuite on verra comment fabriquer nos propres classes de document, mais en fait vous savez déjà &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Imaginons que nous consultions la rubrique ColorTransform.&lt;br/&gt;

&lt;a href=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/flash/geom/ColorTransform.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/flash/geom/ColorTransform.html&quot;  rel=&quot;nofollow&quot;&gt;La page&lt;/a&gt;&lt;br/&gt;

Tout en bas de la page un exemple prêt à l&amp;#039;emploi :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Sprite&lt;/span&gt;;
    &lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;GradientType&lt;/span&gt;;
    &lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;geom&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ColorTransform&lt;/span&gt;;
    &lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;MouseEvent&lt;/span&gt;;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; ColorTransformExample &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; Sprite &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; ColorTransformExample&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;target&lt;/span&gt;:Sprite = &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Sprite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
            draw&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
            addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
            &lt;span class=&quot;kw3&quot;&gt;target&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;useHandCursor&lt;/span&gt; = &lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;;
            &lt;span class=&quot;kw3&quot;&gt;target&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;buttonMode&lt;/span&gt; = &lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;;
            &lt;span class=&quot;kw3&quot;&gt;target&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;, clickHandler&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; draw&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sprite:Sprite&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; red:uint = 0xFF0000;
            &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; green:uint = 0x00FF00;
            &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; blue:uint = 0x0000FF;
            &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;size&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt; = &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;;
            sprite.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;beginGradientFill&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;GradientType.&lt;span class=&quot;me1&quot;&gt;LINEAR&lt;/span&gt;, &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;red, blue, green&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0.5&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;0, &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
            sprite.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;drawRect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0, 0, &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; clickHandler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;event:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; rOffset:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt; = transform.&lt;span class=&quot;me1&quot;&gt;colorTransform&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;redOffset&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;;
            &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bOffset:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt; = transform.&lt;span class=&quot;me1&quot;&gt;colorTransform&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;redOffset&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;;
            &lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;transform&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;colorTransform&lt;/span&gt; = &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; ColorTransform&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, rOffset, 0, bOffset, 0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Pour tester, comme précisé dans &lt;a href=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/ExampleInstruct.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/ExampleInstruct.html&quot;  rel=&quot;nofollow&quot;&gt;la doc elle même&lt;/a&gt;, il nous faudra un fichier as pour la classe et un fla auquel l&amp;#039;associer.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/nouveaufichieras.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aclassedoc&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc:nouveaufichieras.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/nouveaufichieras.jpg?w=789&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;789&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
On note que la classe s&amp;#039;appelle ColorTransformExample, ce sera donc le nom du &lt;strong&gt;fichier as&lt;/strong&gt; que nous enregistrerons &lt;strong&gt;dans le même répertoire que le fla&lt;/strong&gt; de test.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/classcolortransformexample.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aclassedoc&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc:classcolortransformexample.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/classcolortransformexample.jpg?w=431&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;431&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Quant au fichier fla, pour préciser l&amp;#039;association il suffit de saisir le &lt;strong&gt;nom de la classe&lt;/strong&gt; en question dans le &lt;strong&gt;panneau propriétés&lt;/strong&gt; dans le champ Classe.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/associerdocuemnent.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aclassedoc&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc:associerdocuemnent.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/associerdocuemnent.jpg?w=404&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;404&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

Si vous avez collé le code dans le fichier as et enregistré vous pouvez constater qu&amp;#039;à l&amp;#039;exécution du fla il se passe quelque chose.&lt;br/&gt;

C&amp;#039;est un bon début.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;quand_ca_va_mal&quot; id=&quot;quand_ca_va_mal&quot;&gt;Quand ça va mal&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Mais peut-être rencontrez vous déjà un problème, sous forme de message d&amp;#039;erreur à la compilation :&lt;br/&gt;

&lt;em&gt;ColorTransformExample.as, ligne 1 1180: Appel à une méthode qui ne semble pas définie, addFrameScript.&lt;/em&gt;&lt;br/&gt;

Il suffit que vous ayez écrit une malheureuse ligne de code dans le fla, un simple trace, voire une ligne commentée, voire pire : quelques lignes vierges… Si, si, essayez :
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/lignesvides.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aclassedoc&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc:lignesvides.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/lignesvides.jpg?w=381&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;381&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Ça suffit à le faire crier !!
&lt;/p&gt;

&lt;p&gt;
Que se passe-t-il ?&lt;br/&gt;

Regardons la définition de classe :&lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; ColorTransformExample &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; Sprite &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Elle étend la classe Sprite.&lt;br/&gt;

Un objet Sprite est similaire à un clip, mais ne possède pas de scénario. C&amp;#039;est la doc qui le dit, j&amp;#039;ajoute et précise que par conséquent il n&amp;#039;expose pas les méthodes et propriétés de gestion de scénario spécifiques à la classe MovieClip, telles play, stop et autre currentLabel. Une autre méthode spécifique à MovieClip c&amp;#039;est addFrameScript. Non documentée, elle permet d&amp;#039;ajouter du code dynamiquement à une une image. Le fait d&amp;#039;écrire dans le panneau action est manifestement traduit par l&amp;#039;appel à cette fameuse fonction, d&amp;#039;où le message d&amp;#039;erreur. Ce qui est plus surprenant, je vous l&amp;#039;accorde, c&amp;#039;est de constater que même une ligne vierge est comprise comme code… Bon, c&amp;#039;est comme ça, il faut le savoir voilà tout &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Pour se débarrasser du problème il suffit de prendre soin de ne rien écrire du tout dans le panneau action, ou d&amp;#039;étendre la classe MovieClip.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;  &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; ColorTransformExample &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
… et bien sûr d&amp;#039;importer la classe &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;  &lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Ainsi, nous disposons de sources fonctionnelles qu&amp;#039;il suffit d&amp;#039;associer à un document .fla pour les tester, exactement comme si on avait récupéré un .fla avec du code. Vu qu&amp;#039;il est plus simple de fournir du texte qu&amp;#039;un .fla, on trouve très souvent des sources sous cette forme.&lt;br/&gt;

&lt;/p&gt;
&lt;div class=&quot;wrap_tip&quot;&gt;
Comme par ailleurs il est souvent préconisé d&amp;#039;étendre la classe Sprite chaque fois qu&amp;#039;on n&amp;#039;a pas besoin du scénario (quand tout se passe dans une seule image), il n&amp;#039;est pas rare de trouver des sources sous forme d&amp;#039;un fichier .as étendant la classe Sprite. Si vous voulez ajouter votre propre code au fla, ou seulement y noter des infos sous forme de commentaires vous devrez modifier la-dite classe afin qu&amp;#039;elle étende MovieClip.
&lt;/div&gt;
&lt;p&gt;
Ça devient vite pénible de devoir doubler les fichiers (le .fla plus le .as) à chaque fois qu&amp;#039;on a besoin de tester trois lignes. Rien ne vous empêche de prélever la fonction qui vous intéresse et de la coller dans le fla.&lt;br/&gt;

Par exemple ici, que fait le paquetage fourni par la doc ?&lt;br/&gt;

Il dessine un carré dégradé et quand on clique dessus la fonction &lt;code&gt;clickHandler&lt;/code&gt; est invoquée et applique le fameux &lt;code&gt;ColorTransform&lt;/code&gt; à &lt;code&gt;this&lt;/code&gt; (vite dis).
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;        &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; clickHandler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;event:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; rOffset:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt; = transform.&lt;span class=&quot;me1&quot;&gt;colorTransform&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;redOffset&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;;
            &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bOffset:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt; = transform.&lt;span class=&quot;me1&quot;&gt;colorTransform&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;redOffset&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;;
            &lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;transform&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;colorTransform&lt;/span&gt; = &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; ColorTransform&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, rOffset, 0, bOffset, 0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

On est bien d&amp;#039;accord que &lt;strong&gt;le scénario c&amp;#039;est this&lt;/strong&gt; ? On l&amp;#039;a vu en intro, associer une classe à un document c&amp;#039;est en fait associer une classe au gros clip principal que constitue l&amp;#039;animation. Pour vous en convaincre dessinez une forme sur la scène et testez.&lt;br/&gt;

On constate que la couleur de cette forme elle aussi est modifiée au clic. Normal : c&amp;#039;est tout l&amp;#039;objet &lt;code&gt;TimeLine&lt;/code&gt; qui fait l&amp;#039;objet du ColorTransform, donc tout ce qu&amp;#039;on pose sur la “scène”. Souvent on dit par abus de langage qu&amp;#039;on dessine une forme, ou qu&amp;#039;on pose un clip directement sur la scène. En fait il s&amp;#039;agit toujours du scénario, qui lui même est ajouté à la scène à la lecture.
&lt;/p&gt;

&lt;p&gt;
Pour en revenir à nos moutons, dans le cas qui nous intéresse (tester la fonction clickHandler) on pourrait tout aussi bien la coller dans le fla et l&amp;#039;appeler au clic d&amp;#039;un bouton (voire de la scène pour les plus fainéants) :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;, clickHandler&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; clickHandler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;event:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; rOffset:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=transform.&lt;span class=&quot;me1&quot;&gt;colorTransform&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;redOffset&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;;
	&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bOffset:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=transform.&lt;span class=&quot;me1&quot;&gt;colorTransform&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;redOffset&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;transform&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;colorTransform&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; ColorTransform&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,rOffset,0,bOffset,0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Tout ce qu&amp;#039;on a dessiné sur le scénario - avec les couleurs de notre choix pour bien comprendre - sera modifié à chaque clic…&lt;br/&gt;

Pensez bien à supprimer &lt;strong&gt;l&amp;#039;attribut public&lt;/strong&gt; devant la fonction, il &lt;strong&gt;n&amp;#039;a de raison d&amp;#039;être qu&amp;#039;au sein d&amp;#039;un paquetage&lt;/strong&gt;. D&amp;#039;ailleurs le message d&amp;#039;erreur est on ne peut plus explicite :&lt;br/&gt;

&lt;em&gt;1114: L&amp;#039;attribut public ne peut être utilisé que dans un package.&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;creer_sa_propre_classe_de_document&quot; id=&quot;creer_sa_propre_classe_de_document&quot;&gt;Créer sa propre Classe de document&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Pourquoi décider d&amp;#039;écrire un fichier as plutôt que dans le fla ?
&lt;/p&gt;

&lt;p&gt;
• Parce que vous avez envie.&lt;br/&gt;

• Pour donner les sources à quelqu&amp;#039;un facilement sur le forum &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;-)&quot; /&gt;&lt;br/&gt;

• Pour pouvoir éditer son code dans un éditeur digne de ce nom. (Je dénonce : c&amp;#039;est Lilive qui le précise).&lt;br/&gt;

• Parce que vous anticipez un moteur commun à plusieurs animations. Ça c&amp;#039;est le motif qui vaut que je développe un peu :&lt;br/&gt;

Imaginons que vous ayez à réaliser une série de quizz, chacun d&amp;#039;eux sous forme d&amp;#039;un .swf différent. Tous ces quizz auront en commun la gestion même du questionnaire : passer à la question suivante seulement si une réponse a été faite dans la question courante (sinon une jolie boite d&amp;#039;alerte modale &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;), calculer le score, avertir en cas de reprise avant la fin de la série de questions (autre jolie boite modale type Oui/Non : “Votre score est de x, voulez vous vraiment reprendre à zéro”), etc.&lt;br/&gt;

Mais chaque quizz aura ses particularités, des questions différentes pour commencer, mais aussi une charte graphique, des illustrations et autres fioritures…&lt;br/&gt;

Il pourrait être intéressant d&amp;#039;avoir une classe de document Quizz.as qui s&amp;#039;occupe de ce qui est commun, il n&amp;#039;y aurait plus qu&amp;#039;à l&amp;#039;associer à chaque nouveau .fla sans plus se préoccuper de quoique ce soit d&amp;#039;autre que du graphisme… 
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;gestion_du_scenario&quot; id=&quot;gestion_du_scenario&quot;&gt;Gestion du scénario&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Un petit exemple vite fait de classe de document, histoire de nous entrainer. Une classe destinée à une animation qui utilise le scénario, tant qu&amp;#039;à faire…
&lt;/p&gt;

&lt;p&gt;
Imaginons image 1 du scénario un champ de saisie, si la saisie est valide, l&amp;#039;animation est lue (joli effet) et s&amp;#039;arrête sur la dernière image, là on affiche un truc reprenant la saisie.&lt;br/&gt;

L&amp;#039;exemple n&amp;#039;est destiné qu&amp;#039;à illustrer les quelques points qui ont à voire avec la gestion du scénario.
&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;466&quot; height=&quot;258&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/democlassedoc.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;466&quot; height=&quot;258&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/democlassedoc.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Il vous faut donc un .fla minimaliste avec un champ de saisie image 1, une zolie animation jusqu&amp;#039;à image 30 (par exemple) et sur cette image un nouveau champ texte dynamique.&lt;br/&gt;

Il vous faut aussi une classe destinée à être associée. Pour une fois je ne vais pas jouer la francophone forcenée, d&amp;#039;accord, on l&amp;#039;appelle &lt;code&gt;main&lt;/code&gt; (mais maitre ça allait aussi &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;).
&lt;/p&gt;

&lt;p&gt;
Les deux classes dans le même répertoire, comme d&amp;#039;habitude. Si vous souhaitez vous organiser autrement, maintenant &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales#organisation_du_disque_et_chemin_de_classe&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;vous savez faire&lt;/a&gt;. Si la classe est incluse dans paquetage, il faudra tout écrire : 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/classedocpaquetage.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aclassedoc&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc:classedocpaquetage.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/classedocpaquetage.jpg?w=679&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;679&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

Préparons le travail, le fichier .as :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// ******** Requiert **************&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// btValide : Bouton - image 1&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// txtPseudo : textField - image 1&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// txtNom : TextField - dernière image&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//******************************&lt;/span&gt;
&amp;nbsp;
package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; main &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                    &lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;passage dans main&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Bien sûr, on étend MovieClip puisqu&amp;#039;on compte lire le scénario, et on importe la classe.
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;ne_confondez_pas&quot; id=&quot;ne_confondez_pas&quot;&gt;Ne confondez pas…&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Une fois la classe main associée au .fla via le champ Classe du panneau de propriété, on peut tester… Ce n&amp;#039;est pas bien satisfaisant, ça boucle (normal on n&amp;#039;a rien fait) mais bon, ça ne crie pas et c&amp;#039;est un bon début. Et puis aussi vous constatez que la fonction constructeur n&amp;#039;est invoquée qu&amp;#039;une fois. 
Je disais en introduction que tout ce qu&amp;#039;on écrit image 1 d&amp;#039;un fla peut tout aussi bien être écrit dans une classe, c&amp;#039;est toujours vrai, mais constatez tout de même la &lt;strong&gt;différence entre constructeur&lt;/strong&gt; (initialisation) &lt;strong&gt;et action d&amp;#039;image&lt;/strong&gt;. Si image 1 du .fla vous écrivez un &lt;code&gt;trace(“Je passe”)&lt;/code&gt;, la fenêtre de sortie affiche son “je passe” à chaque boucle, alors que le constructeur n&amp;#039;est invoqué qu&amp;#039;une fois.
&lt;/p&gt;

&lt;p&gt;
&lt;span class=&quot;wrap_info&quot;&gt;
Notez aussi au passage (si je peux dire) que le constructeur est invoqué avant les actions d&amp;#039;image de l&amp;#039;image 1
&lt;/span&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Première chose, arrêter la lecture :&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;costructeur&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
C&amp;#039;est presque la même chose que le stop qu&amp;#039;on pose image 1.&lt;br/&gt;

Vous voyez pourquoi je dis presque ?
&lt;/p&gt;

&lt;p&gt;
Lançons la lecture au clic sur le bouton :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;costruc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			btValide.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,valide&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; valide&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;play&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Là c&amp;#039;est clair ! Un stop image 1 aurait de nouveau arrêté la lecture dès le retour image 1. Ici il n&amp;#039;y est pas, ça boucle donc sans discontinuer, normal, mais j&amp;#039;en connais qui s&amp;#039;y sont laissé prendre &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;la_liste_d_affichage&quot; id=&quot;la_liste_d_affichage&quot;&gt;La liste d&amp;#039;affichage&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Occupons nous maintenant d&amp;#039;écrire le contenu du champ txtPseudo (image 1) dans txtNom image 30 (la dernière)
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Mauvaise idée&lt;/strong&gt; :&lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; valide&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
                        txtNom.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ça marche &amp;quot;&lt;/span&gt;+txtPseudo.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Effectivement, image 30 il n&amp;#039;y a plus txtPseudo… A la lecture de chaque image la liste d&amp;#039;affichage est modifiée : n&amp;#039;y figurent que les objets présents sur l&amp;#039;image courante, mais vous le saviez… C&amp;#039;est juste dans le cadre du “ce qui va sans dire va toujours mieux en le disant” &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; valide&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; leNom:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=txtPseudo.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			txtNom.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ça marche &amp;quot;&lt;/span&gt;+leNom;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Ça c&amp;#039;est déjà mieux, et dans un contexte de réalité on sortirait sans doute la variable pour pouvoir y accéder de partout par la suite.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; main &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; leNom:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;costruc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			btValide.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,valide&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; valide&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			leNom=txtPseudo.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			txtNom.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ça marche &amp;quot;&lt;/span&gt;+leNom;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Ça, c&amp;#039;est carrément bien : une variable globale (visible de partout dans la classe) et privée (c&amp;#039;est de la cuisine interne, on n&amp;#039;y accèdera pas depuis le fla).&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;ajouter_des_actions_d_image&quot; id=&quot;ajouter_des_actions_d_image&quot;&gt;Ajouter des actions d&amp;#039;image&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
D&amp;#039;accord j&amp;#039;accélère, j&amp;#039;en vois qui s&amp;#039;impatientent…&lt;br/&gt;

La vraie question c&amp;#039;est comment lancer la lecture (play) pour lire la belle animation, et s&amp;#039;arrêter image 30 pour y écrire &lt;code&gt;leNom&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
La solution passe par la fameuse méthode non documentée addFrameScript. Elle admet deux paramètres, le premier le numéro de l&amp;#039;image, le second une fonction qui sera invoquée à la lecture de l&amp;#039;image en question.&lt;br/&gt;

&lt;span class=&quot;wrap_important&quot;&gt;
Les images sont numérotées depuis zéro.
&lt;/span&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;unClip.&lt;span class=&quot;me1&quot;&gt;addFrameScript&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;,test&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

… invoquera la fonction test image 20
&lt;/p&gt;

&lt;p&gt;
Ce que vous auriez écrit dans l&amp;#039;action d&amp;#039;image, vous l&amp;#039;écrivez dans le bloc de la fonction, c&amp;#039;est aussi simple et pratique que ça &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;costruc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			addFrameScript&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;totalFrames-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,fin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			btValide.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,valide&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; fin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;fin&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			txtNom.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ça marche &amp;quot;&lt;/span&gt;+leNom;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; valide&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			leNom=txtPseudo.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;play&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Tant qu&amp;#039;à faire on ajoute le code non pas image 30 mais sur la dernière image, ça nous permettra de modifier la durée de l&amp;#039;animation si le cœur nous en dit &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;utiliser_des_clips_associes_a_une_classe&quot; id=&quot;utiliser_des_clips_associes_a_une_classe&quot;&gt;Utiliser des clips associés à une classe&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Juste pour le plaisir d&amp;#039;utiliser notre nouvelle classe BoiteAlerte, vérifions que txtPseudo n&amp;#039;est pas vide avant de lancer la lecture.
&lt;/p&gt;

&lt;p&gt;
Il nous faut donc un symbole qui sera lié à la classe BoiteAlerte, si vous ne vous souvenez plus des caractéristiques requises par la classe, ouvrez là et lisez votre pense bête que vous n&amp;#039;avez pas manqué d&amp;#039;insérer tout en haut &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// ******** requiert ******************&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//btOK : bouton&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//txtPrompt : TextField &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//*************************************&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Vous pouvez aussi copier/coller le symbole de l&amp;#039;exercice précédent &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_mrgreen.gif&quot; class=&quot;middle&quot; alt=&quot;:mrgreen:&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Le code depuis le fla, vous savez faire. Là c&amp;#039;est pareil… 
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// ******** Requiert **************&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// btValid : Bouton&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// txtPseudo : textField - image 1&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// txtNom : TextField - dernière image&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//******************************&lt;/span&gt;
package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;MouseEvent&lt;/span&gt;;
&amp;nbsp;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; main &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; leNom:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;;
        &lt;span class=&quot;co1&quot;&gt;// ---&amp;gt; déclaration/valorisation de la variable &lt;/span&gt;
		&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bteAlerte:Mv_BoiteAlerte=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			addFrameScript&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;totalFrames-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,fin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			btValide.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,valide&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; fin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			txtNom.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ça marche &amp;quot;&lt;/span&gt;+leNom;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; valide&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;//--&amp;gt; interception&lt;/span&gt;
                	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txtPseudo.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;==&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                                &lt;span class=&quot;co1&quot;&gt;// &amp;quot;réglages&amp;quot;&lt;/span&gt;
				bteAlerte.&lt;span class=&quot;me1&quot;&gt;racine&lt;/span&gt;=root;
				bteAlerte.&lt;span class=&quot;me1&quot;&gt;prompt&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Le champ ne doit pas être vide&amp;quot;&lt;/span&gt;;
				bteAlerte.&lt;span class=&quot;me1&quot;&gt;x&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageWidth&lt;/span&gt;-bteAlerte.&lt;span class=&quot;me1&quot;&gt;largeurBoite&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;;
				bteAlerte.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;;
				bteAlerte.&lt;span class=&quot;me1&quot;&gt;coulEcran&lt;/span&gt;=0xFF0000;
                                &lt;span class=&quot;co1&quot;&gt;// afficher&lt;/span&gt;
				bteAlerte.&lt;span class=&quot;me1&quot;&gt;affiche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
				&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;;
			&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
			leNom=txtPseudo.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;play&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Et voilà le travail &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;pour_resumer&quot; id=&quot;pour_resumer&quot;&gt;Pour résumer&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

 
&lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_arrow.gif&quot; class=&quot;middle&quot; alt=&quot;:arrow:&quot; /&gt; Une classe de document doit impérativement étendre la classe Sprite ou MovieClip.&lt;br/&gt;
 
On peut étendre Sprite quand on n&amp;#039;utilisera pas le scénario (une seule image), et on sait qu&amp;#039;on ne pourras rien écrire dans les actions d&amp;#039;image du fla associé, même pas un commentaire.&lt;br/&gt;

Dit autrement : &lt;strong&gt;étendre MovieClip, ça marche toujours&lt;/strong&gt; ; étendre Sprite c&amp;#039;est soumis à contrainte.
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_arrow.gif&quot; class=&quot;middle&quot; alt=&quot;:arrow:&quot; /&gt; Le constructeur de la classe est invoqué avant les actions d&amp;#039;image 1 et ce n&amp;#039;est pas la même chose.
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_arrow.gif&quot; class=&quot;middle&quot; alt=&quot;:arrow:&quot; /&gt; Seuls les objets d&amp;#039;affichage de l&amp;#039;image courante du scénario sont présents dans la liste d&amp;#039;affichage.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;passer_d_un_.fla_a_un_.as_et_vices_inverses&quot; id=&quot;passer_d_un_.fla_a_un_.as_et_vices_inverses&quot;&gt;Passer d&amp;#039;un .fla à un .as (et vices inversés)&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Pour en finir avec ce chapitre, et puisqu&amp;#039;il est fréquent de disposer d&amp;#039;une classe document alors qu&amp;#039;on souhaite rester dans l&amp;#039;ide et pas si rare de s&amp;#039;apercevoir en cours de travail sur le fla, que tous comptes faits, une classe conviendrait mieux, voici le même code selon les deux versions :
&lt;/p&gt;

&lt;p&gt;
On considère un champ texte &lt;code&gt;txtSortie&lt;/code&gt; et un bouton &lt;code&gt;btDemo&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/transposeflaas.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aclassedoc&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc:transposeflaas.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc/transposeflaas.jpg?w=743&amp;amp;h=477&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;743&quot; height=&quot;477&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
[mode vieille chose] … et n&amp;#039;allez pas imbriquer toutes les fonctions dans le constructeur … [/mode]
&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;mais_du_coup&quot; id=&quot;mais_du_coup&quot;&gt;Mais… Du coup…&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
 
Nous voici donc au point pour ce qui est de la classe de document, classe destinée à être associée au gros clip racine qu&amp;#039;est l&amp;#039;objet &lt;code&gt;MainTimeline&lt;/code&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Et si on associait une classe de document à un “petit clip normal” de la bibliothèque ? Ça ferait quoi ?&lt;br/&gt;

Et bien pareil &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Un clip c&amp;#039;est un clip, qu&amp;#039;il s&amp;#039;agisse du scénario principal ou d&amp;#039;un clip de bibliothèque, il hérite de la même classe (ouf…) et se comporte pareil (re ouf !). Le dernier exemple de classe que nous avons mis en œuvre ici présuppose qu&amp;#039;il existe à la racine du projet image 1, un champ de saisie et un bouton. Il présuppose aussi un autre champ texte sur la dernière image. Sachez que n&amp;#039;importe quel clip qui respecte ces prérequis pourra tout aussi bien être associé à cette classe.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Ce qui implique que rien ne nous oblige à exploiter une classe de document (trouvée sur le net par exemple) en tant que telle. Imaginons une classe de document qui mette en œuvre un carrousel, ou un menu Dock. L&amp;#039;associer à un un .fla pour la tester c&amp;#039;est bien, mais dans la pratique, on n&amp;#039;aura jamais besoin &lt;em&gt;uniquement&lt;/em&gt; de ce menu, il viendra s&amp;#039;intégrer au reste de l&amp;#039;animation (un site probablement). Un peu compliqué, non, d&amp;#039;en faire un swf qui sera chargé et exploité dans un autre .fla ? &lt;br/&gt;

On pourra fort bien associer la classe à un symbole de la bibliothèque, en profiter pour enrichir ce symbole des éléments graphiques de notre goût (fond et fioritures) et en disposer une instance sur la scène.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Cette fois, c&amp;#039;est définitivement tout pour ce qui concerne les classes que j&amp;#039;ai dites “relatives à un fichier fla” en introduction. Il ne nous reste plus qu&amp;#039;à voir ce qui concerne les autres classes, celles que j&amp;#039;ai dites génériques dans cette même introduction.
&lt;/p&gt;

&lt;p&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;C&amp;#039;est par là que ça se passe.&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>Nataly</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Mon, 26 Jul 2010 17:31:47 +0200</pubDate>
        </item>
        <item>
            <title>Classe liée</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2</link>
            <description>&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 19 mai 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;p&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h1&gt;&lt;a name=&quot;classe_liee&quot; id=&quot;classe_liee&quot;&gt;Classe liée&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Une classe liée, c&amp;#039;est la même chose qu&amp;#039;une classe de base, si ce n&amp;#039;est qu&amp;#039;&lt;strong&gt;on ne peut pas lier plusieurs symboles à la même classe&lt;/strong&gt; comme on la &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque#ne_confondez_pas&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;vu ici.&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Quel intérêt alors ?
&lt;/p&gt;

&lt;p&gt;
L&amp;#039;intérêt principal c&amp;#039;est que ça mène tout droit au composant &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;-)&quot; /&gt;, l&amp;#039;intérêt second c&amp;#039;est qu&amp;#039;&lt;strong&gt;on peut l&amp;#039;initialiser à la création&lt;/strong&gt;, en utilisant addChild.&lt;br/&gt;

Débarrassons nous de cette histoire d&amp;#039;initialisation, ensuite on jouera à transformer un symbole lié à une classe en composant… Oui, oui, vous avez bien entendu, on peut le faire (Bonus !). 
&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;exemple_avec_la_classe_simplebutton&quot; id=&quot;exemple_avec_la_classe_simplebutton&quot;&gt;Exemple avec la classe SimpleButton&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Plutôt qu&amp;#039;illustrer ce chapitre avec un symbole clip, nous allons le faire avec un symbole bouton. D&amp;#039;une pierre deux coups &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Puisque l&amp;#039;intérêt de la classe liée c&amp;#039;est de permettre l&amp;#039;initialisation à la création (mot clé new) considérons le cas typique suivant : on voudrait un beau bouton, avec graphisme maison qui déchire tout et un champ texte pour y écrire l&amp;#039;intitulé du bouton.
&lt;/p&gt;

&lt;p&gt;
Ensuite on pourrait ajouter autant d&amp;#039;instances (occurrences) que nécessaire comme suit :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; btAcceuil:BoutonPerso=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Accueil&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; btInfo:BoutonPerso=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Qui sommes nous ?&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; btProduits:BoutonPerso=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Nos Produits&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw3&quot;&gt;Menu&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addChild&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;btAccueil&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
btAccueil.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt;=0;
&lt;span class=&quot;kw3&quot;&gt;Menu&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addChild&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;btInfo&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
btAccueil.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;;
&lt;span class=&quot;co1&quot;&gt;// etc…&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;la_classe&quot; id=&quot;la_classe&quot;&gt;La classe&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Commençons par la classe, ensuite on fera le bouton qu&amp;#039;on y associera. (Si vous avez envie de jouer à faire du beau bouton tout de suite, retenez vous : vous seriez obligés de tout recommencer dès l&amp;#039;étape suivante).
&lt;/p&gt;

&lt;p&gt;
Comme d&amp;#039;habitude, classe et fichier fla de test doivent être dans le même répertoire (on a vu comment s&amp;#039;organiser autrement &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales#organisation_du_disque_et_chemin_de_classe&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;là&lt;/a&gt;).
En fait, vous savez la construire cette classe, ça obéit aux mêmes règles que ce que nous venons de voir (une chance), donc même modèle qu&amp;#039;une classe de base, si ce n&amp;#039;est que dans le cas qui nous occupe, il s&amp;#039;agit d&amp;#039;étendre non pas la classe &lt;code&gt;MovieClip&lt;/code&gt;, mais la classe &lt;code&gt;SimpleButton&lt;/code&gt;, et donc d&amp;#039;importer non pas &lt;code&gt;flash.display.MovieClip&lt;/code&gt;, mais &lt;code&gt;flash.display.SimpleButton&lt;/code&gt;.
&lt;/p&gt;
&lt;div class=&quot;wrap_tip&quot;&gt;
L&amp;#039;information est dans la doc. Posez le curseur dans votre code sur &lt;code&gt;SimpleButton&lt;/code&gt;, enfoncez la touche F1, regardez tout en haut :&lt;br/&gt;

Package	&lt;strong&gt;flash.display&lt;/strong&gt;&lt;br/&gt;

Classe	public class &lt;strong&gt;SimpleButton&lt;/strong&gt; 
&lt;/div&gt;
&lt;p&gt;

Allez, zou ! Un fichier .as, un package, dedans une classe, dedans un constructeur, un trace pour tester…
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SimpleButton&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoutonPerso &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SimpleButton&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;constructeur BoutonPerso&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;le_.fla&quot; id=&quot;le_.fla&quot;&gt;Le .fla&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Du côté du fla, dans la bibliothèque, un bouton avec une forme et un champ texte : &lt;code&gt;txtTitre&lt;/code&gt; (faites simple surtout, c&amp;#039;est très provisoire), case exporter pour ActionScript cochée, &lt;strong&gt;champ &lt;em class=&quot;u&quot;&gt;Classe&lt;/em&gt;&lt;/strong&gt; renseigné du nom de la classe (ici BoutonPerso).
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2/propsymbolelie.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque2&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2:propsymbolelie.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2/propsymbolelie.jpg?w=787&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;787&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Dans le panneau action de l&amp;#039;image 1 de la scène :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bouton1:BoutonPerso=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BoutonPerso &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bouton1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
bouton1.&lt;span class=&quot;me1&quot;&gt;x&lt;/span&gt;=bouton1.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Testez, jusque là rien de neuf. On a dit que l&amp;#039;intérêt de la classe liée c&amp;#039;est l&amp;#039;initialisation à la création. Allons y donc, ajoutons un paramètre au constructeur :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// la classe&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTitre:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;constructeur BoutonPerso &amp;quot;&lt;/span&gt;+pTitre&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;//le fla&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bouton1:BoutonPerso=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BoutonPerso &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Coucou&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bouton1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
bouton1.&lt;span class=&quot;me1&quot;&gt;x&lt;/span&gt;=bouton1.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Plus rien pour vous surprendre, si ce n&amp;#039;est que ça crie quand on a le culot de poser directement une instance sur la scène :&lt;br/&gt;

&lt;em&gt;ArgumentError: Error #1063: Non-correspondance du nombre d&amp;#039;arguments sur BoutonPerso(). 1 prévu(s), 0 détecté(s)&lt;/em&gt;.&lt;br/&gt;

Suivi de tout un tas d&amp;#039;insanités… 
&lt;/p&gt;

&lt;p&gt;
Normal, l&amp;#039;instance posée sur la scène invoque le constructeur sans argument (comment ferait-elle ?) or le constructeur en prévoyait un…&lt;br/&gt;

Qu&amp;#039;à cela ne tienne, il suffit de le rendre facultatif en précisant une valeur par défaut.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTitre:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;truc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Nous voilà parés.
&lt;/p&gt;

&lt;p&gt;
Qui vous savez s&amp;#039;énerve derrière son clavier. Lui il veut écrire le titre dans le champ texte, c&amp;#039;est bien le but non ? Et bien pas possible, ce fichu machin prétend qu&amp;#039;il n&amp;#039;y pas de champ texte nommé txtTitre… Ça fait dix fois qu&amp;#039;il vérifie, bien sûr que si !
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;les_etats_de_bouton&quot; id=&quot;les_etats_de_bouton&quot;&gt;Les états de bouton&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

En effet :

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTitre:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;truc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;txtTitre&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

… nous renvoie :

&lt;/p&gt;
&lt;pre class=&quot;code trace&quot;&gt;[object BoutonPerso]
null&lt;/pre&gt;
&lt;p&gt;
Il est pas gonflé lui… Mais, null toi même !&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
En fait c&amp;#039;est à cause de cette particularité des boutons qui veut qu&amp;#039;ils présentent différents visuels selon la position/action de la souris. Dans l&amp;#039;ide les images sont nommées Haut, Dessus, Abaissé et Cliqué. C&amp;#039;est ce qu&amp;#039;on appellera ici les états.&lt;br/&gt;

On accède aux états à l&amp;#039;aide des propriétés &lt;strong&gt;upState, overState, downState&lt;/strong&gt; et &lt;strong&gt;hitTestState&lt;/strong&gt; qui renvoient un objet d&amp;#039;affichage utilisé comme visuel associé à l&amp;#039;état considéré&lt;br/&gt;

Concrètement, il va s&amp;#039;agir pour nous de regrouper le visuel de chacun des états dans un clip, ensuite nous pourrons accéder au contenu via la propriété idoine.
&lt;/p&gt;

&lt;p&gt;
Pour commencer contentons nous de construire un clip pour l&amp;#039;état Haut (chez moi &lt;code&gt;Mv_EtatHaut&lt;/code&gt;). Il contiendra a minima une forme et un champ texte nommé &lt;code&gt;txtTitre&lt;/code&gt; (vous pouvez tout bonnement convertir ce que vous avez avec F8 après avoir sélectionné la forme et le champ texte).
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2/constructboutonetathaut.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque2&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2:constructboutonetathaut.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2/constructboutonetathaut.png?w=500&amp;amp;h=435&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;500&quot; height=&quot;435&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
On peut maintenant récupérer le clip via la propriété upstate qui renvoie un displayObject de type MovieClip
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTitre:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;truc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;upstate : &amp;quot;&lt;/span&gt;+&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;upState&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code trace&quot;&gt;upstate : [object MovieClip]&lt;/pre&gt;
&lt;p&gt;
Et on accède à txtTitre tout normalement (en ayant pris soin de transtyper en MovieClip) :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTitre:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;truc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;upstate : &amp;quot;&lt;/span&gt;+&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;upState&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;txtTitre &amp;quot;&lt;/span&gt;+&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;upState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;txtTitre&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;upState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;txtTitre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=pTitre;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code trace&quot;&gt;upstate : [object MovieClip]
txtTitre [object TextField]&lt;/pre&gt;
&lt;p&gt;
On pause une instance sur la scène et comme on l&amp;#039;espérait, à l&amp;#039;exécution le champ texte affiche “truc”, la valeur par défaut. 
&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;180&quot; height=&quot;100&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2/demoboutonetathaut.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;180&quot; height=&quot;100&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2/demoboutonetathaut.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Les deux autres états (survol et abaissé) affichent “pour voir”, normal c&amp;#039;est ce qu&amp;#039;on avait mis dans le champ texte du symbole, justement pour y voir quelque chose.&lt;br/&gt;

Ce qui peut décontenancer, c&amp;#039;est de constater que même si seule l&amp;#039;image &lt;code&gt;Haut&lt;/code&gt; contient un visuel (comme sur la copie d&amp;#039;écran) les deux autres états affichent tout de même quelque chose. C&amp;#039;est comme ça, c&amp;#039;est à savoir : si seul l&amp;#039;état &lt;code&gt;Haut&lt;/code&gt; (upState) a été crée dans symbole, le lecteur le duplique pour les deux autres états. De la même manière si l&amp;#039;état &lt;code&gt;Abaissé&lt;/code&gt; (downState) n&amp;#039;a pas été crée, c&amp;#039;est l&amp;#039;état &lt;code&gt;Dessus&lt;/code&gt; (overState) qui est dupliqué.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Finitions&lt;/strong&gt; :&lt;br/&gt;

Libre à vous maintenant de créer les autres clips pour &lt;strong&gt;faire les visuels des états survol et abaissé&lt;/strong&gt;. Il faudra bien sûr avoir recours aux propriétés overState et downState pour initialiser le champ de texte.&lt;br/&gt;

Par ailleurs, puisque on a prévu l&amp;#039;éventualité où les boutons seraient posés directement sur la scène il faut faire en sorte qu&amp;#039;ils puissent afficher autre chose que truc (la valeur par défaut). Il nous faut une &lt;strong&gt;propriété titre&lt;/strong&gt;, donc un couple d&amp;#039;accesseurs comme &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1#accesseurs_settergetter&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;vous savez les faire&lt;/a&gt; maintenant &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;390&quot; height=&quot;110&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2/demoboutonlie.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;390&quot; height=&quot;110&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2/demoboutonlie.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// mise en œuvre fla&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// bt1 sur la scène&lt;/span&gt;
bt1.&lt;span class=&quot;me1&quot;&gt;titre&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Accueil&amp;quot;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// une instance ajoutée dynamiquement&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bouton1:BoutonPerso=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BoutonPerso &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Infos&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bouton1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SimpleButton&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoutonPerso &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SimpleButton&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _titre:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoutonPerso&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTitre:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_titre=pTitre;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;upState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;txtTitre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=_titre;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;downState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;txtTitre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=_titre;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;overState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;txtTitre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=_titre;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; titre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pTitre:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_titre=pTitre;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;upState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;txtTitre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=_titre;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;downState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;txtTitre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=_titre;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;overState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;txtTitre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=_titre;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;get&lt;/span&gt; titre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; _titre;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;pour_resumer&quot; id=&quot;pour_resumer&quot;&gt;Pour résumer&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Et ben voilà &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt; C&amp;#039;est pas plus, on a vu que la classe liée se construit exactement selon les mêmes principes que la classe de base, donc rien de plus à mémoriser (chic !)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Quant à la classe SimpleButton, l&amp;#039;important à en connaitre c&amp;#039;est l&amp;#039;histoire des états qui se doivent d&amp;#039;être une instance de clip.

&lt;/p&gt;
&lt;div class=&quot;wrap_important&quot;&gt;
N&amp;#039;allez pas vous emmêler : On est bien d&amp;#039;accord qu&amp;#039;une classe qui étend SimpleButton peut être indifféremment une classe de base ou une classe liée, je ne l&amp;#039;ai utilisée dans ce contexte que dans l&amp;#039;idée de nous gagner un peu de temps (et d&amp;#039;avoir quelque chose à illustrer &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_mrgreen.gif&quot; class=&quot;middle&quot; alt=&quot;:mrgreen:&quot; /&gt;) 
&lt;/div&gt;&lt;div class=&quot;wrap_download&quot;&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2/classelieebouton.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2:classelieebouton.zip&quot;&gt;sources CS3&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;vers_les_composants_perso&quot; id=&quot;vers_les_composants_perso&quot;&gt;Vers les composants perso&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Du coup on s&amp;#039;offre un détour par le composant.&lt;br/&gt;

Pour construire un composant il faut impérativement que la classe associée au symbole destiné à devenir composant le soit via le champ Classe, une classe liée donc.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Même si ça a à voire avec ce tuto, du point de vue de la classe liée, vous pouvez sauter la partie composant et continuer par le chapitre suivant : classe de document. Le module composant n&amp;#039;est qu&amp;#039;un détour où rien de nouveau sur les classes ne sera vu.
&lt;/p&gt;

&lt;p&gt;
Itinéraire direct —&amp;gt; &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

Itinéraire découverte —&amp;gt; lien composant (à écrire) 
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>Nataly</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Mon, 26 Jul 2010 17:31:01 +0200</pubDate>
        </item>
        <item>
            <title>Héritage et surcharge (#1)</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales</link>
            <description>&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 29 mai 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h1&gt;&lt;a name=&quot;heritage_et_surcharge_1&quot; id=&quot;heritage_et_surcharge_1&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Pour illustrer les points qui vont suivre, je vous propose d&amp;#039;écrire quelques classes destinées à gérer des boites de dialogue modales.&lt;br/&gt;

On dit d&amp;#039;une boite de dialogue (et d&amp;#039;une fenêtre en général) qu&amp;#039;elle est modale quand sa fermeture est obligatoire pour pouvoir donner le focus à une autre fenêtre. En gros quand on ne peut pas accéder à d&amp;#039;autres éléments d&amp;#039;interface aussi longtemps qu&amp;#039;elle est affichée (ça empêche l&amp;#039;utilisateur de cliquer partout &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;)&lt;br/&gt;

Typiquement il s&amp;#039;agit des boites d&amp;#039;alerte et autres boites de type Oui/Non.
&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/boitesmodalesintro.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/boitesmodalesintro.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;
&lt;br/&gt;

&lt;em&gt;Merci Lilive pour l&amp;#039;illustration bien &lt;del&gt;moins laide&lt;/del&gt; plus jolie que celle dont je m&amp;#039;étais contentée.&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;conception&quot; id=&quot;conception&quot;&gt;Conception&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Comme vous le voyez au dessus, la ruse consiste à créer un écran translucide entre la boite de dialogue et les autres éléments de l&amp;#039;animation.&lt;br/&gt;

Le principe de l&amp;#039;écran est commun à toutes les boites, qu&amp;#039;elles soient de type Alerte (un bouton), Question (Oui-Non) ou encore Boite de saisie.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Principe commun, quand on pense classe ça revient à dire héritage.
Toutes les boites, si elles sont modales, devront hériter des même caractéristiques, donc d&amp;#039;une même classe qui se chargera d&amp;#039;afficher un écran translucide entre la boite et l&amp;#039;animation.&lt;br/&gt;

Appelons cette classe BoiteModale, elle héritera de MovieClip et chacune des classes (BoiteAlerte, BoiteOuiNon…) héritera de BoiteModale.
&lt;/p&gt;

&lt;p&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/crobheritmodal.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aboitesmodales&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales:crobheritmodal.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/crobheritmodal.jpg?w=600&amp;amp;h=450&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;600&quot; height=&quot;450&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

Dans un premier temps je vous propose de construire une boite d&amp;#039;alerte modale, ensuite ce sera jeu d&amp;#039;enfant de décliner le principe pour d&amp;#039;autres types de boites.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
On est d&amp;#039;accord sur le fait qu&amp;#039;il va nous falloir, outre un fla de mise en œuvre, une classe BoiteAlerte et une classe BoiteModale.&lt;br/&gt;

Si on anticipe le fait que plus tard viendront s&amp;#039;ajouter des classes BoiteSaisie, BoiteOuiNon, et d&amp;#039;autres, on ne peut plus se satisfaire de tout ranger dans le même répertoire (le fla et les classes auxquelles il fait appel). D&amp;#039;autant moins que ces classes vont nous être utiles chaque fois que, dans un projet ou un autre, nous auront recours à une boite de type modal.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;organisation_du_disque_et_chemin_de_classe&quot; id=&quot;organisation_du_disque_et_chemin_de_classe&quot;&gt;Organisation du disque et chemin de classe&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;le_.fla_de_test&quot; id=&quot;le_.fla_de_test&quot;&gt;Le .fla de test&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Le .fla de test c&amp;#039;est pure formalité :&lt;br/&gt;

Dans sa bibliothèque il faut un clip qui sera une boite d&amp;#039;alerte. Faire aussi moche que sur la demo ne devrait pas vous prendre trop de temps, pour l&amp;#039;instant même un simple rectangle (pour y voir quelque chose) suffirait.&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/boitealerteconstruc.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aboitesmodales&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales:boitealerteconstruc.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/boitealerteconstruc.jpg?w=351&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;351&quot; /&gt;&lt;/a&gt;
&lt;br/&gt;

Et on l&amp;#039;enregistre là où ça nous arrange…&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;organiser_les_classes&quot; id=&quot;organiser_les_classes&quot;&gt;Organiser les classes&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

En revanche pour ce qui est des classes, cette fois on ne va pas les laisser dans le même répertoire que le fla.&lt;br/&gt;

Il est de tradition d&amp;#039;avoir dans un coin de disque un répertoire Outils, ou Utils, voire Utilitaires dans lequel on range ses classes perso.&lt;br/&gt;

Afin de ne pas risquer de confusions avec des répertoires pré-existants, ce dossier je vais le nommer &lt;code&gt;Mezoutils&lt;/code&gt;.&lt;br/&gt;

Dedans, un sous-répertoire Interface et dedans encore un autre répertoire BoitesModales, comme ça ce sera bien propre.
&lt;/p&gt;

&lt;p&gt;
A terme donc nous aurons quelque chose qui ressemblera à ça :
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/hierarchiedisque.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aboitesmodales&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales:hierarchiedisque.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/hierarchiedisque.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

On est d&amp;#039;accord que ce clip (&lt;code&gt;Mv_BoiteAlerte&lt;/code&gt;, par exemple) est destiné à être associé à la future classe BoiteAlerte qui étendra la future classe BoiteModale. Ces deux classes seront rangées - empaquetées - dans le répertoire Interface/BoiteModale. C&amp;#039;est cette hiérarchie de dossier qui détermine le nom du paquetage, ici : &lt;code&gt;Interface.BoiteModale&lt;/code&gt;.&lt;br/&gt;

On sait tout, yapuka…
&lt;/p&gt;

&lt;p&gt;
Créons les classes avec seulement un trace dans le constructeur :&lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;kw3&quot;&gt;Interface&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BoiteModale&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
      &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteModale &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoiteModale &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
               &lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;passage constructeur BoiteModale &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;kw3&quot;&gt;Interface&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BoiteModale&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteAlerte &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; BoiteModale &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
               &lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;passage constructeur BoiteAlerte&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

 
La seule chose nouvelle c&amp;#039;est le nom du paquetage : pour “atteindre” la classe BoiteAlerte on utilisera donc la syntaxe &lt;code&gt;Interface.BoiteModale.BoiteAlerte&lt;/code&gt;, au même titre qu&amp;#039;on utilise par expemple &lt;code&gt;flash.display.MovieClip&lt;/code&gt; quand il s&amp;#039;agit de la classe MovieClip. 
&lt;/p&gt;

&lt;p&gt;
Il ne reste plus qu&amp;#039;à associer &lt;code&gt;Interface.BoiteModale.BoiteAlerte&lt;/code&gt; et le symbole Mv_BoiteAlerte via le champ Classe de base.
&lt;/p&gt;

&lt;p&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/cheminboitealerte.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aboitesmodales&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales:cheminboitealerte.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/cheminboitealerte.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Si ce n&amp;#039;est que, par défaut, le compilateur va chercher la classe ou le paquetage dans le même répertoire que le .fla, où il ne le trouve pas, et pour cause on l&amp;#039;a rangé dans le répertoire Mezoutils… 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/avertissement2.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aboitesmodales&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales:avertissement2.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/avertissement2.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Il faut donc préciser dans les préférences de publication (menu Fichier) le chemin vers ce répertoire Mezoutils :
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/cheminclasse-2.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aboitesmodales&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales:cheminclasse-2.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/cheminclasse-2.jpg&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Et voilà :
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/chemin2.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aboitesmodales&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales:chemin2.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/chemin2.jpg&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;em&gt;
&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;verifier&quot; id=&quot;verifier&quot;&gt;Vérifier&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Cette fois c&amp;#039;est bon, on va pouvoir avancer. &lt;br/&gt;

Pour être certains que le compilateur retrouve ses petits, testons l&amp;#039;histoire d&amp;#039;une simple ligne dans le fla : &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bteAlerte:Mv_BoiteAlerte=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class=&quot;code trace&quot;&gt;passage constructeur BoiteModale 
passage constructeur BoiteAlerte&lt;/pre&gt;
&lt;p&gt;
Je suis bien d&amp;#039;accord, vérifier que ça fonctionne juste en s&amp;#039;extasiant sur quelques lignes dans le panneau de sortie ce n&amp;#039;est toujours pas plus satisfaisant. Temporairement, pour voir ce qu&amp;#039;on fait, on va donc ajouter l&amp;#039;instance de bteAlerte à la liste d&amp;#039;affichage avec un addChild dans le .fla.
&lt;/p&gt;

&lt;p&gt;
Puisque l&amp;#039;objectif est de fabriquer une boite modale qui en s&amp;#039;affichant proscrira l&amp;#039;accès aux autres éléments de l&amp;#039;animation, profitons en pour ajouter sur la scène quelques boutons et un champ de saisie. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/illustrsceneboitemode.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Aboitesmodales&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales:illustrsceneboitemode.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/illustrsceneboitemode.jpg?w=533&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;533&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bteAlerte:Mv_BoiteAlerte=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Pour l&amp;#039;instant ça ne proscrit rien du tout, c&amp;#039;est le contraire qui aurait été étonnant on n&amp;#039;a rien fait pour &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/btealerte1.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/btealerte1.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;
&lt;br/&gt;

&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;la_classe_mere&quot; id=&quot;la_classe_mere&quot;&gt;La classe mère&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Il s&amp;#039;agit, pour toutes les boites modales, de fabriquer - quoiqu&amp;#039;il arrive - un écran (une forme) aux dimensions de la scène et de l&amp;#039;ajouter. Ça concerne donc la classe BoiteModale dont dériveront (hériteront) toutes les autres, et ça se passe dans le constructeur.&lt;br/&gt;

Avant même de se lancer dans les grandes manœuvres, une chose est sûre : pour dessiner un truc aux dimensions de la scène, il faut les avoir, les dimensions. Trop facile ! C&amp;#039;est stage.stageWidth, et stage.stageHeight, clame Ronchon dans un élan de bonne humeur retrouvée.&lt;br/&gt;

Bonne humeur qui ne dure pas car justement, si on teste stage.width dans le constructeur on est désappointé : l&amp;#039;éternelle erreur 1009 (&lt;em&gt;Il est impossible d&amp;#039;accéder à la propriété ou à la méthode d&amp;#039;une référence d&amp;#039;objet nul&lt;/em&gt;) est renvoyée.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;proprietes_stage_root_et_parent_d_une_instance&quot; id=&quot;proprietes_stage_root_et_parent_d_une_instance&quot;&gt;propriétés stage, root, et parent d&amp;#039;une instance&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Regardons ça de plus près, c&amp;#039;est qui le nul ?  
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoiteModale&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;passage constructeur BoiteModale &amp;quot;&lt;/span&gt;+&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;scène &amp;quot;&lt;/span&gt;+&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code trace&quot;&gt;passage constructeur BoiteModale [object Mv_BoiteAlerte]
scène null
passage constructeur BoiteAlerte&lt;/pre&gt;
&lt;p&gt;
Et bien c&amp;#039;est la scène semble-t-il… Comment ça ??&lt;br/&gt;

En fait c&amp;#039;est logique, souvenons nous : le constructeur est invoqué à la création de l&amp;#039;instance, avant donc que la-dite instance soit ajoutée. D&amp;#039;ailleurs, le premier test on l&amp;#039;a fait sans même invoquer un addChild. &lt;code&gt;var monObjet:MaClasse = new MaClasse()&lt;/code&gt; hop ! ça invoque le constructeur, et à ce moment là l&amp;#039;objet n&amp;#039;étant pas dans liste d&amp;#039;affichage les propriétés, parent, root, et stage renvoient tout naturellement null…&lt;br/&gt;

Zutalors, comment faire ?&lt;br/&gt;

Tout bêtement en attendant que l&amp;#039;instance soit ajoutée pour utiliser ses propriétés parent, root ou stage. Dès qu&amp;#039;une instance est ajoutée, l&amp;#039;événement ADDED_TO_STAGE est diffusé (l&amp;#039;instance &lt;em&gt;crie&lt;/em&gt; “Ayé ! Je suis dans la liste d&amp;#039;affichage”). Pour nous il suffit donc d&amp;#039;écouter cet événement (importez le package flash.events.Event) 
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Event&lt;/span&gt;;&lt;/pre&gt;&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoiteModale&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;passage constructeur BoiteModale &amp;quot;&lt;/span&gt;+&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Event.&lt;span class=&quot;me1&quot;&gt;ADDED_TO_STAGE&lt;/span&gt;,QdAjouté&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; QdAjouté&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;qd ajouté &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageWidth&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code trace&quot;&gt;passage constructeur BoiteModale [object Mv_BoiteAlerte]
passage constructeur BoiteAlerte
qd ajouté 
500&lt;/pre&gt;
&lt;p&gt;
&lt;span class=&quot;wrap_tip&quot;&gt;
Notez bien qui est &lt;code&gt;this&lt;/code&gt; &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/span&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;dessiner_dans_une_forme&quot; id=&quot;dessiner_dans_une_forme&quot;&gt;Dessiner dans une forme&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Pour dessiner dans une forme il faut d&amp;#039;abord créer une forme &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; uneForme:Shape=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Shape  ;&lt;/pre&gt;
&lt;p&gt;
… puis utiliser sa propriété graphics qui permet d&amp;#039;avoir recours à un ensemble de méthodes pour dessiner des formes vectorielles. Par exemple pour dessiner un rectangle rouge et opaque (alpha=1) de 300 sur 100 (largeur/hauteur) on écrirait :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// remplissage rouge opaque&lt;/span&gt;
uneForme.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;beginFill&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0xFF0000,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;co1&quot;&gt;// dessiner un rectangle en 0/0 300 large, 100 haut&lt;/span&gt;
uneForme.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;drawRect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0,0,&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Appliqué à ce qui nous préoccupe ça donne :&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
• Créer (et ajouter) une forme dans le constructeur, une bonne fois pour toutes.&lt;br/&gt;

• Dessiner dans la forme une fois l&amp;#039;instance ajoutée à la liste d&amp;#039;affichage pour avoir accès aux dimensions de scène.
&lt;/p&gt;

&lt;p&gt;
Puisque la forme destinée à faire écran sera crée dans une fonction et utilisée (pour y dessiner) dans une autre, il nous faut ne variable globale privée, nommons la _ecran.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteModale &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _ecran:Shape;
&amp;nbsp;
         &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoiteModale&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                        &lt;span class=&quot;co1&quot;&gt;// a l'initialisation, créer la forme&lt;/span&gt;
			_ecran=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Shape&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class=&quot;co1&quot;&gt;// ajouter _ecran à liste d'affichage (tout en bas)&lt;/span&gt;
			addChildAt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_ecran,0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class=&quot;co1&quot;&gt;// attendre que this soit ajouté sur la scène &lt;/span&gt;
                        &lt;span class=&quot;co1&quot;&gt;// pour avoir accès à ses dimensions  &lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Event.&lt;span class=&quot;me1&quot;&gt;ADDED_TO_STAGE&lt;/span&gt;,qdAjouté&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
On a bien pris soin d&amp;#039;utiliser &lt;strong&gt;addChildAt&lt;/strong&gt; avec une profondeur &lt;strong&gt;0&lt;/strong&gt;, un addChild (tout court) aurait placé la forme au dessus de tout le reste, et proscrit aussi l&amp;#039;accès aux boutons de la boite…
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; QdAjouté&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;qd ajouté &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageWidth&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class=&quot;co1&quot;&gt;// gris en alpha 0.1&lt;/span&gt;
	ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;beginFill&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0x333333,&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;drawRect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0,0,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageWidth&lt;/span&gt;,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageHeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;			
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/btealerte2.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/btealerte2.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;initialiser_et_modifier_les_caracteristiques_de_l_ecran&quot; id=&quot;initialiser_et_modifier_les_caracteristiques_de_l_ecran&quot;&gt;Initialiser et modifier les caractéristiques de l&amp;#039;écran&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Au point où on en est, autant permettre à l&amp;#039;utilisateur de définir la couleur et l&amp;#039;opacité (l&amp;#039;alpha) de l&amp;#039;écran. Il suffit de sortir deux variables.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Soit on les déclare publiques et globales, et hop le tour est joué ; soit on décide d&amp;#039;utiliser des accesseurs…&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
C&amp;#039;est le cas de conscience typique.&lt;br/&gt;

Définir des accesseurs qui ne feront rien d&amp;#039;autres que modifier la valeur d&amp;#039;une variable globale (certes privée)…&lt;br/&gt;

Mouais…&lt;br/&gt;

Arguer que oui mais ça permettrait de modifier la couleur de l&amp;#039;écran après l&amp;#039;affichage…&lt;br/&gt;

Je réponds à nouveau d&amp;#039;un borborygme pas convaincu. Ça n&amp;#039;a pas grand sens, ce sont des boites destinées à être affichées pour prévenir de toute autre action utilisateur que celle qu&amp;#039;on attend… Quand va-t-on avoir besoin de modifier la couleur ou l&amp;#039;alpha, ou ce qu&amp;#039;on voudra, après l&amp;#039;affichage de la dite boite, pendant que l&amp;#039;utilisateur n&amp;#039;a d&amp;#039;autre recours que cliquer sur le bouton OK ?&lt;br/&gt;

En plus, pour ceux qui s&amp;#039;y essaieront quand même (si, si, c&amp;#039;est de bonne guerre), il y aura des surprises, pas incontournables, mais des surprises. Alors écrire une usine pour offrir une fonctionnalité inutile, sur ce coup là, c&amp;#039;est sans moi &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Donc deux globales publiques ! &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteModale &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; coulEcran:uint=0x333333;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; alphaEcran:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _ecran:Shape;
&amp;nbsp;
                &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; qdAjouté&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;beginFill&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;coulEcran,alphaEcran&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;drawRect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0,0,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageWidth&lt;/span&gt;,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageHeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;strong&gt;Appel depuis le fla :&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bteAlerte:Mv_BoiteAlerte=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
bteAlerte.&lt;span class=&quot;me1&quot;&gt;coulEcran&lt;/span&gt;=0xFF0000;
bteAlerte.&lt;span class=&quot;me1&quot;&gt;alphaEcran&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0.5&lt;/span&gt;
addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;

&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/moboitesmodalesr1.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/moboitesmodalesr1.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;determiner_les_coordonnees_de_la_boite&quot; id=&quot;determiner_les_coordonnees_de_la_boite&quot;&gt;Déterminer les coordonnées de la boite&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Cette fois ça suffit, notre boite de dialogue toute coincée là haut, ça ne peut plus durer.&lt;br/&gt;

Il faut pouvoir disposer la boite de dialogue là où on veut sur la scène à l&amp;#039;aide des propriétés x et y :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;bteAlerte.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Si ce n&amp;#039;est qu&amp;#039;en l&amp;#039;état ça descend tout en 50. La boite et l&amp;#039;écran.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/moboitesmodalesr2.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/moboitesmodalesr2.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Normal.&lt;br/&gt;

L&amp;#039;écran est ajouté à l&amp;#039;instance - via la classe mère  - il est déplacé avec elle
&lt;/p&gt;

&lt;p&gt;
reprenons le processus :&lt;br/&gt;

1) on crée une instance (&lt;code&gt;new Mv_Alerte()&lt;/code&gt;)&lt;br/&gt;

2) on invoque affiche –&amp;gt; passage dans qdAjouté –&amp;gt; dessin d&amp;#039;un rectangle dans de _ecran en 0/0 :&lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;drawRect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0,0,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageWidth&lt;/span&gt;,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageHeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;

Dans le cas qui nous occupe il faudrait qu&amp;#039;il soit créé en 0/-50, pour compenser le décalage vertical. - 50, c&amp;#039;est -y… Pour x c&amp;#039;est même combat… Modifions donc :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; qdAjouté&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;beginFill&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;coulEcran,alphaEcran&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class=&quot;co1&quot;&gt;// répercuter le décalage x/y&lt;/span&gt;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;drawRect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;-x,-y,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageWidth&lt;/span&gt;,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageHeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/moboitesmodalesr3.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales/moboitesmodalesr3.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
C&amp;#039;est un bon début. Maintenant on va faire en sorte que la boite s&amp;#039;auto-affiche : on veut pouvoir l&amp;#039;utiliser comme suit :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bteAlerte:Mv_BoiteAlerte=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
bteAlerte.&lt;span class=&quot;me1&quot;&gt;affiche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
… ou presque… Bon d&amp;#039;accord on va rencontrer deux trois subtilités… Et, je sais pas vous, mais moi je ferais bien une pause, alors &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;on se retrouve là&lt;/a&gt; tout de suite après ?
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>Nataly</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Mon, 26 Jul 2010 17:28:26 +0200</pubDate>
        </item>
        <item>
            <title>Héritages et surcharge (#2)</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1</link>
            <description>&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 30 mai 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h1&gt;&lt;a name=&quot;heritages_et_surcharge_2&quot; id=&quot;heritages_et_surcharge_2&quot;&gt;Héritages et surcharge (#2)&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Allez ! J&amp;#039;espère que vous êtes tout frais pétillants : on va aborder les choses sérieuses. Pas de panique, j&amp;#039;ai pas dit difficiles, juste qui nécessitent un zeste de concentration, mais comme on revient de pause, tout va bien &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
L&amp;#039;objectif c&amp;#039;est de pouvoir utiliser toute boite héritant de BoiteModale de façon “autonome”. Comprendre qu&amp;#039;elles exposent toutes une méthode affiche et… non, pas de méthode fermer puisque la fermeture est toujours conséquence d&amp;#039;un clic sur l&amp;#039;un des boutons de la boite. Quand je dis pas de méthode fermer, j&amp;#039;entends pas de méthode exposée, il faudra bien qu&amp;#039;à un moment ou à un autre on en programme la fermeture &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;methode_affiche&quot; id=&quot;methode_affiche&quot;&gt;Méthode &amp;#039;&amp;#039;affiche&amp;#039;&amp;#039;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Dans nos rêves on veut donc utiliser comme suit :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// on crée l'objet une bonne fois pour toutes&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bteAlerte:Mv_BoiteAlerte=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// on l'affiche autant de fois que nécessaire&lt;/span&gt;
btT1.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,test&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; test&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	bteAlerte.&lt;span class=&quot;me1&quot;&gt;affiche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
La boite se fermera automatiquement quand l&amp;#039;utilisateur cliquera sur le bouton (seul et unique en cas de boite d&amp;#039;alerte, mais même chose pour les boites avec plusieurs boutons).
&lt;/p&gt;

&lt;p&gt;
Cette &lt;strong&gt;méthode&lt;/strong&gt; &lt;code&gt;affiche&lt;/code&gt; (tant pis je me répète) sera &lt;strong&gt;commune&lt;/strong&gt; à toutes les boites de dialogue, par conséquent elle &lt;strong&gt;concerne la classe mère&lt;/strong&gt; BoiteModale.
&lt;/p&gt;

&lt;p&gt;
Zou ! Direction la classe, on écrit une fonction publique (puisque exposée) qui contient une ligne utilisant addChild pour ajouter à la liste d&amp;#039;affichage.&lt;br/&gt;

Ajouter qui ? Et bien &lt;code&gt;this&lt;/code&gt; puisque (vous l&amp;#039;avez tracé) c&amp;#039;est Mv_BoiteAlerte, dans notre exemple.
&lt;/p&gt;

&lt;p&gt;
On écrirait bien un truc du genre &lt;code&gt;root.addChild(this)&lt;/code&gt;, mais… on n&amp;#039;a pas encore accès à la propriété &lt;code&gt;root&lt;/code&gt;, on l&amp;#039;aura quand ce sera affiché… Le serpent se mord la queue &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_sad.gif&quot; class=&quot;middle&quot; alt=&quot;:(&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Pas d&amp;#039;autres solution&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; name=&quot;fnt__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; qu&amp;#039;avoir préalablement valorisé une variable &lt;code&gt;racine&lt;/code&gt;. On va donc le faire (ce sera une contrainte d&amp;#039;utilisation) avant l&amp;#039;appel à la méthode affiche, depuis le .fla, ce qui donnera :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// le .fla&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bteAlerte:Mv_BoiteAlerte=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
bteAlerte.&lt;span class=&quot;me1&quot;&gt;racine&lt;/span&gt;=root;
&amp;nbsp;
btT1.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,test&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; test&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	bteAlerte.&lt;span class=&quot;me1&quot;&gt;affiche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Dans la classe on déclare une variable publique &lt;code&gt;racine&lt;/code&gt; de type &lt;code&gt;DisplayObject&lt;/code&gt;, et on pense à importer le paquetage &lt;code&gt;flash.display.DisplayObject&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// classe BoiteModale&lt;/span&gt;
package &lt;span class=&quot;kw3&quot;&gt;Interface&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BoitesModales&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Shape&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;DisplayObject&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Event&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteModale &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; racine:DisplayObject;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// … suite&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

Et on écrit la bête fonction affiche, qui doit être publique (on l&amp;#039;appelle de l&amp;#039;extérieur).
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; affiche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;méthode affiche ds modale&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;racine&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addChild&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Pour se prévenir de toute mauvaise surprise, quand plus tard on aura (peut-être) oublié que la propriété racine doit impérativement être valorisée, et afin d&amp;#039;éviter un message d&amp;#039;erreur abscons :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; affiche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;affiche modale&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;racine==&lt;span class=&quot;kw2&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
				&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ATTENTION la propriété racine doit être valorisée (root)&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
				&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;;
			&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;racine&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addChild&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
C&amp;#039;est bien joli, mais on ne peut plus s&amp;#039;en débarrasser.&lt;br/&gt;

Il nous faut une fonction &lt;code&gt;ferme&lt;/code&gt; qui sera invoquée depuis le bouton OK de la boite d&amp;#039;alerte.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;methode_ferme&quot; id=&quot;methode_ferme&quot;&gt;Méthode &amp;#039;&amp;#039;ferme&amp;#039;&amp;#039;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Toutes les boites disposeront de cette fonction, c&amp;#039;est une caractéristique commune, c&amp;#039;est donc la classe mère qui est concernée.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		internal &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; ferme&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ferme Mère &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;racine&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;removeChild&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Heuhhh ! Qu&amp;#039;est ce que c&amp;#039;est que ce &lt;code&gt;internal&lt;/code&gt; ???&lt;br/&gt;

Jusqu&amp;#039;alors en s&amp;#039;en était sorti avec les mots clé attribut (c&amp;#039;est comme ça que ça s&amp;#039;appelle &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_confused.gif&quot; class=&quot;middle&quot; alt=&quot;:-?&quot; /&gt;) &lt;code&gt;private&lt;/code&gt; ou &lt;code&gt;public&lt;/code&gt;. D&amp;#039;un certain point de vue cette fonction n&amp;#039;est pas publique puisqu&amp;#039;on ne l&amp;#039;appellera pas depuis le .fla, mais si on la déclare privée, on ne pourra pas l&amp;#039;invoquer depuis la classe fille… Et bien, voilà, dans ce cas on utilise &lt;strong&gt;&lt;code&gt;internal&lt;/code&gt;&lt;/strong&gt; qui &lt;strong&gt;rend&lt;/strong&gt; la fonction (la variable ou la classe considérée) &lt;strong&gt;disponible&lt;/strong&gt; pour tous les appels &lt;strong&gt;au sein du même paquetage&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Ne reste plus qu&amp;#039;à l&amp;#039;appeler dans &lt;code&gt;BoiteAlerte&lt;/code&gt; au clic sur bouton. C&amp;#039;est le moment d&amp;#039;ajouter le bouton en question, si ce n&amp;#039;est déjà fait.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// ******** requiert ******************&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//btOK :bouton&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//*************************************&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
package &lt;span class=&quot;kw3&quot;&gt;Interface&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BoitesModales&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;MouseEvent&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteAlerte &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; BoiteModale &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;passage constructeur BoiteAlerte&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			btOK.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,btOKQdClick&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; btOKQdClick&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ferme &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			ferme&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Oui : c&amp;#039;est pas plus mal de prendre l&amp;#039;habitude, quand vous écrivez des classes de base, de préciser en commentaire les objets requis dans le symbole associé. Vous en serez bien contents un jour ou l&amp;#039;autre &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1/btealerte3.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1/btealerte3.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Youpi ! On assure grave !&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Raa… Non ! Pas encore tout à fait : si on appelle la boite plusieurs fois de suite, à chaque appel l&amp;#039;écran est un peu plus opaque… Normal, à chaque fois &lt;code&gt;qdAjouté&lt;/code&gt; est invoquée et un rectangle supplémentaire est dessiné dans la forme &lt;code&gt;_ecran&lt;/code&gt;. Les rectangles se superposant l&amp;#039;opacité l&amp;#039;est chaque fois plus - opaque &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;&lt;br/&gt;

Ça c&amp;#039;est rien du tout, peut être même avez vous anticipé d&amp;#039;une ligne qui efface juste avant de dessiner :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; qdAjouté&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                        &lt;span class=&quot;co1&quot;&gt;// effacer&lt;/span&gt;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;beginFill&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;coulEcran,alphaEcran&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;drawRect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0,0,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageWidth&lt;/span&gt;,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageHeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;surcharge&quot; id=&quot;surcharge&quot;&gt;Surcharge&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;surcharger_la_methode_affiche_de_boitemodale&quot; id=&quot;surcharger_la_methode_affiche_de_boitemodale&quot;&gt;Surcharger la méthode affiche de BoiteModale&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Occupons nous maintenant d&amp;#039;afficher un texte de notre choix dans la boite d&amp;#039;alerte. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
On souhaite pouvoir initialiser le champ texte avant d&amp;#039;afficher la boite de cette façon :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; test&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txtSaisie.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;==&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		bteAlerte.&lt;span class=&quot;me1&quot;&gt;prompt&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;le champ ne doit pas être vide&amp;quot;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		bteAlerte.&lt;span class=&quot;me1&quot;&gt;prompt&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;saisie : &amp;quot;&lt;/span&gt;+txtSaisie.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	bteAlerte.&lt;span class=&quot;me1&quot;&gt;affiche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Déclarer une variable globale publique &lt;code&gt;prompt&lt;/code&gt; dans la classe BoiteAlerte ce n&amp;#039;est pas le plus difficile, en revanche comment se sortir de cette méthode affiche que l&amp;#039;on a définie dans la classe BoiteModale ? 
C&amp;#039;est une méthode commune, elle doit rester dans la classe mère.&lt;br/&gt;

On veut qu&amp;#039;elle s&amp;#039;enrichisse d&amp;#039;une fonctionnalité supplémentaire pour les boites d&amp;#039;alerte : la méthode doit, pour tout le monde, ajouter le clip à la racine, et en plus, pour les boites d&amp;#039;alerte, écrire dans le champ texte. On va donc re-écrire la fonction &lt;code&gt;affiche&lt;/code&gt; dans la classe fille en la surchargeant. Les anglophones pensent “prendre le dessus” et écrivent override.
&lt;/p&gt;

&lt;p&gt;
Pour &lt;strong&gt;surcharger&lt;/strong&gt; une méthode (ou une propriété),&lt;br/&gt;

il faut &lt;strong&gt;respecter la même signature&lt;/strong&gt; et faire précéder du mot clé &lt;strong&gt;override&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Ça donne ça :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Classe BoiteAlerte&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteAlerte &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; BoiteModale &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; prompt:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// [...]&lt;/span&gt;
&amp;nbsp;
		override &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; affiche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;alerte affiche&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class=&quot;co1&quot;&gt;// écrire dans le champ texte&lt;/span&gt;
			txtPrompt.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=prompt;
                        &lt;span class=&quot;co1&quot;&gt;// invoquer la méthode de la classe mère&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;super&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;affiche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Comme vous le constatez, pour exécuter une méthode surchargée on utilise le mot clé &lt;strong&gt;super&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;surcharger_les_propriete_ou_des_methodes_natives&quot; id=&quot;surcharger_les_propriete_ou_des_methodes_natives&quot;&gt;Surcharger les propriété ou des méthodes natives&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Là, je suis désolée : impossible de phosphorer une illustration du principe de la surcharge des fonctions natives d&amp;#039;une classe, appliquée à cet exemple, qui ne soit pas complètement capilotractée… J&amp;#039;en appelle donc à votre grande mansuétude pour ce qui va suivre…
&lt;/p&gt;

&lt;p&gt;
Ce qu&amp;#039;il faut savoir c&amp;#039;est que le principe de surcharge n&amp;#039;est pas réservé aux fonctions écrites par nous même dans nos propres classes. On peut surcharger n&amp;#039;importe quelle méthode ou propriété d&amp;#039;une classe native, pour peu qu&amp;#039;on en ait la signature. Imaginons que nous souhaitions interdire à l&amp;#039;utilisateur de boites modale l&amp;#039;utilisation de la propriété alpha parce que… parce que… parce qu&amp;#039;il me faut bien exemple…
&lt;/p&gt;

&lt;p&gt;
Consultons la doc à propos de la propriété alpha.&lt;br/&gt;
 
Regardez l&amp;#039;entrée implémentation :
&lt;/p&gt;
&lt;div class=&quot;wrap_help&quot;&gt;
&lt;strong&gt;Implémentation&lt;/strong&gt;&lt;br/&gt;
&lt;pre class=&quot;code&quot;&gt;  public function get alpha():Number
  public function set alpha(value:Number):void&lt;/pre&gt;
&lt;div class=&quot;wrap_origin&quot;&gt;&lt;a href=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/flash/display/DisplayObject.html#alpha&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/flash/display/DisplayObject.html#alpha&quot;  rel=&quot;nofollow&quot;&gt;Extrait de la documentation&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;

Oh ! Un couple d&amp;#039;accesseurs &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;&lt;br/&gt;

Parfait, ce sont des fonctions, on peut donc surcharger le &lt;em&gt;setter&lt;/em&gt; d&amp;#039;une petite ligne à nous (comme on l&amp;#039;a fait avec notre fonction &lt;code&gt;affiche&lt;/code&gt; à l&amp;#039;instant). 
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;		override &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; alpha&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pA:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Utilisation de l'alpha proscrite&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
En vrai elle ne fait rien cette fonction, mais rien de rien si on considère qu&amp;#039;une ligne de trace c&amp;#039;est rien. Elle n&amp;#039;appelle même pas la super classe. C&amp;#039;est ce qu&amp;#039;on veut… Pas d&amp;#039;appel, pas de modification de l&amp;#039;alpha.&lt;br/&gt;

Si on avait voulu l&amp;#039;invoquer tout de même cette propriété alpha de la classe mère (super-classe) on aurait écrit &lt;code&gt;super.alpha=…&lt;/code&gt;.&lt;br/&gt;

&lt;span class=&quot;wrap_info&quot;&gt;
&lt;strong&gt;A noter :&lt;/strong&gt;&lt;br/&gt;

Pour aller vite j&amp;#039;ai dit, à l&amp;#039;instant, qu&amp;#039;on pouvait surcharger les propriétés des classes natives, pour peu qu&amp;#039;elles soient définies par des accesseurs, bien sûr.
&lt;/span&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;resultat_des_courses&quot; id=&quot;resultat_des_courses&quot;&gt;Résultat des courses&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Et voilà ce que vous pourrez obtenir :&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmoales1/btealerte5.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;200&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmoales1/btealerte5.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Appel dans le .fla :&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// le .fla&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; bteAlerte:Mv_BoiteAlerte=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
bteAlerte.&lt;span class=&quot;me1&quot;&gt;racine&lt;/span&gt;=root;
bteAlerte.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;;
bteAlerte.&lt;span class=&quot;me1&quot;&gt;x&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;;
bteAlerte.&lt;span class=&quot;me1&quot;&gt;alpha&lt;/span&gt;=0
&amp;nbsp;
btT1.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,test&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; test&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	bteAlerte.&lt;span class=&quot;me1&quot;&gt;alphaEcran&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txtSaisie.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;==&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		bteAlerte.&lt;span class=&quot;me1&quot;&gt;coulEcran&lt;/span&gt;=0xFF0000;
		bteAlerte.&lt;span class=&quot;me1&quot;&gt;prompt&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;le champ ne doit pas être vide&amp;quot;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		bteAlerte.&lt;span class=&quot;me1&quot;&gt;coulEcran&lt;/span&gt;=0x00FF00;
		bteAlerte.&lt;span class=&quot;me1&quot;&gt;prompt&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;saisie : &amp;quot;&lt;/span&gt;+txtSaisie.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	bteAlerte.&lt;span class=&quot;me1&quot;&gt;affiche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;strong&gt;La classe BoiteModale :&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// BoitesModales.as&lt;/span&gt;
&amp;nbsp;
package &lt;span class=&quot;kw3&quot;&gt;Interface&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BoitesModales&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Shape&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;DisplayObject&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Event&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteModale &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; racine:DisplayObject;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; coulEcran:uint=0x333333;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; alphaEcran:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;co1&quot;&gt;//&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _ecran:Shape;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _largeur:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _hauteur:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoiteModale&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;//trace(&amp;quot;passage constructeur BoiteModale &amp;quot;);&lt;/span&gt;
                        &lt;span class=&quot;co1&quot;&gt;// lire hauteur et largeur de la boite AVANT dessin de l'écran&lt;/span&gt;
			_largeur=&lt;span class=&quot;kw3&quot;&gt;width&lt;/span&gt;;
			_hauteur=&lt;span class=&quot;kw3&quot;&gt;height&lt;/span&gt;;
			_ecran=&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Shape&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			addChildAt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_ecran,0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Event.&lt;span class=&quot;me1&quot;&gt;ADDED_TO_STAGE&lt;/span&gt;,qdAjouté&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;co1&quot;&gt;//-------------------------------------------------&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; qdAjouté&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;e&lt;/span&gt;:Event&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;beginFill&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;coulEcran,alphaEcran&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			_ecran.&lt;span class=&quot;me1&quot;&gt;graphics&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;drawRect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;-x,-y,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageWidth&lt;/span&gt;,&lt;span class=&quot;kw3&quot;&gt;stage&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;stageHeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; affiche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;affiche modale&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;racine==&lt;span class=&quot;kw2&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
				&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ATTENTION la propriété racine doit être valorisée (root)&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
				&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;;
			&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;racine&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addChild&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		internal &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; ferme&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;//trace(&amp;quot;ferme Mère &amp;quot;);&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;racine&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;removeChild&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
               &lt;span class=&quot;co1&quot;&gt;// on en aura bien besoin un jour ;)&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;get&lt;/span&gt; largeurBoite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; _largeur;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;get&lt;/span&gt; hauteurBoite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; _hauteur;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;co1&quot;&gt;// Surcharge alpha&lt;/span&gt;
		override &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; alpha&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pA:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Utilisation de l'alpha proscrite&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;strong&gt;Classe BoiteAlerte :&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// BoiteAlerte.AS&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// ******** requiert ******************&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//btOK : bouton&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//txtPrompt : TextField &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//*************************************&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
package &lt;span class=&quot;kw3&quot;&gt;Interface&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BoitesModales&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;MouseEvent&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; BoiteAlerte &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; BoiteModale &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; prompt:&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; BoiteAlerte&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;passage constructeur BoiteAlerte&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			btOK.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,btOKQdClick&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; btOKQdClick&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ferme &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			ferme&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		override &lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; affiche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;alerte affiche&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			txtPrompt.&lt;span class=&quot;kw3&quot;&gt;text&lt;/span&gt;=prompt;
			&lt;span class=&quot;kw3&quot;&gt;super&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;affiche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;pour_resumer&quot; id=&quot;pour_resumer&quot;&gt;Pour résumer&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Récapitulons nous :&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Le concept de &lt;strong&gt;surcharge&lt;/strong&gt; (override en anglais) intervient lorsqu&amp;#039;on a besoin de &lt;strong&gt;modifier certaines fonctionnalités héritées&lt;/strong&gt;. (Ça c&amp;#039;est T.Imbert qui le dit, je vois pas l&amp;#039;intérêt de formuler plus mal sous couvert de dire autrement &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;)
&lt;/p&gt;

&lt;p&gt;
Pour surcharger une fonction héritée on utilise le mot clé &lt;strong&gt;override&lt;/strong&gt; et on respecte la signature.&lt;br/&gt;

On trouve la signature des méthodes natives dans la documentation sous l&amp;#039;entrée implémentation.&lt;br/&gt;

On invoque la fonction de la classe mère à l&amp;#039;aide de l&amp;#039;instruction &lt;strong&gt;super&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;vocabulaire&quot; id=&quot;vocabulaire&quot;&gt;Vocabulaire&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Ici sans le savoir, nous avons mis en place les techniques d&amp;#039;encapsulation et de polymorphisme.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Encapsuler&lt;/strong&gt; c&amp;#039;est “cacher” ou proscrire l&amp;#039;accès direct à certaines méthodes ou propriétés d&amp;#039;une classe. A chaque fois qu&amp;#039;on utilise des accesseurs pour modifier une propriété (plutôt qu&amp;#039;en faire une simple variable publique) on encapsule. A chaque fois qu&amp;#039;on définit une méthode comme privée ou interne (internal) on l&amp;#039;encapsule aussi (ici la méthode ferme, par exemple).
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Le polymorphisme&lt;/strong&gt; c&amp;#039;est le fait de définir des comportements différents pour une même méthode, selon la classe dont elle dépend au sein d&amp;#039;un même arbre d&amp;#039;héritage. La doc l&amp;#039;explique comme suit :&lt;br/&gt;


&lt;/p&gt;
&lt;div class=&quot;wrap_quote&quot;&gt;
Par exemple, vous pouvez commencer par une classe appelée &lt;code&gt;Mamifere&lt;/code&gt; qui comporte les méthodes &lt;code&gt;play()&lt;/code&gt; et &lt;code&gt;sleep()&lt;/code&gt;. Vous créez ensuite les sous-classes &lt;code&gt;Chat&lt;/code&gt;, &lt;code&gt;Singe&lt;/code&gt; et &lt;code&gt;Chien&lt;/code&gt; pour étendre la classe &lt;code&gt;Mamifere&lt;/code&gt;. Les sous-classes supplantent la méthode &lt;code&gt;play()&lt;/code&gt; de la classe &lt;code&gt;Mamifere&lt;/code&gt;, de façon à représenter de façon plus réaliste ces types d&amp;#039;animaux. La classe &lt;code&gt;Singe&lt;/code&gt; implémente la méthode &lt;code&gt;play()&lt;/code&gt; pour se balancer aux arbres ; la classe &lt;code&gt;Chat&lt;/code&gt; implémente la méthode &lt;code&gt;play()&lt;/code&gt; pour courir après une pelote ; la classe &lt;code&gt;Chien&lt;/code&gt; implémente la méthode &lt;code&gt;play()&lt;/code&gt;  pour rapporter une balle. Dans la mesure où la fonctionnalité sleep() reste similaire quelque soit l&amp;#039;animal, vous utiliseriez l&amp;#039;implémentation de super-classe.
&lt;div class=&quot;wrap_origin&quot;&gt;&lt;a href=&quot;http://livedocs.adobe.com/flash/9.0_fr/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts_bak&amp;amp;file=00000825.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://livedocs.adobe.com/flash/9.0_fr/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts_bak&amp;amp;file=00000825.html&quot;  rel=&quot;nofollow&quot;&gt;Extrait de la documentation&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;

La super-classe c&amp;#039;est la classe mère.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
En gros le simple fait de surcharger une méthode ou une propriété c&amp;#039;est du polymorphisme, donc en surchargeant &lt;code&gt;affiche&lt;/code&gt; nous avons fait du polymorphisme, tous seuls comme des grands, plus fort que Jourdain !
&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;cliquez_pour_continuer&quot; id=&quot;cliquez_pour_continuer&quot;&gt;Cliquez pour continuer&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Le titre c&amp;#039;est surtout pour marquer la transition, séparer ce paragraphe du résumé qui précède et introduire la suite.&lt;br/&gt;

Parce que suite il y a.&lt;br/&gt;

On pourrait croire en être quitte pour ce qui est de la boite d&amp;#039;alerte, mais il manque encore quelque chose…&lt;br/&gt;

Imaginez que vous utilisiez ce type de boite d&amp;#039;alerte après avoir mis en en pause une animation, quand l&amp;#039;utilisateur clique, l&amp;#039;animation reprend… Et comment le sait-on que l&amp;#039;utilisateur a cliqué ? 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements --&amp;gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; name=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
Si il y a d&amp;#039;autres solutions, par exemple passer la variable en argument. j&amp;#039;ai fait le choix qui m&amp;#039;arrangeait, vous ferez le votre…&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>Nataly</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Mon, 26 Jul 2010 17:27:55 +0200</pubDate>
        </item>
        <item>
            <title>Classe de base (#2)</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1</link>
            <description>&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 14 mai 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;p&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h1&gt;&lt;a name=&quot;classe_de_base_2&quot; id=&quot;classe_de_base_2&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;variables_d_instances&quot; id=&quot;variables_d_instances&quot;&gt;Variables d&amp;#039;instances&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Vous avez donc un code qui ressemble à ça
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BitmapFilterQuality&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BlurFilter&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; AvecFlou &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; AvecFlou&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
			photo.&lt;span class=&quot;me1&quot;&gt;mask&lt;/span&gt;=masque;
			photo.&lt;span class=&quot;me1&quot;&gt;cacheAsBitmap&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
On remarque que les instances de clip nommées &lt;code&gt;masque&lt;/code&gt; et &lt;code&gt;photo&lt;/code&gt; sont “directement utilisables”. La classe connait leur nom semble-t-il.&lt;br/&gt;

C&amp;#039;est l&amp;#039;effet d&amp;#039;un réglage par défaut des préférences fichier de Flash. 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1/declarerautomatiquement.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque1&quot; class=&quot;media wikilink2&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1:declarerautomatiquement.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1/declarerautomatiquement.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Quand la case &lt;strong&gt;Déclarer automatiquement les occurrences&lt;/strong&gt; est cochée, le compilateur déclare, tout seul dans son coin, des variables pour les instances de symboles posées sur les calques. Ces variables ont le bon goût d&amp;#039;avoir le nom des instances auxquelles elles renvoient.
&lt;/p&gt;

&lt;p&gt;
Décochez la case de la scène, enregistrez, testez.
&lt;/p&gt;

&lt;p&gt;
1120: Accès à la propriété non définie masque.&lt;br/&gt;

1120: Accès à la propriété non définie photo.
&lt;/p&gt;

&lt;p&gt;
Je ne commente pas, c&amp;#039;est assez parlant…&lt;br/&gt;

Si ?&lt;br/&gt;

En langage compilateur ça veut dire : “Hey gars ! Tu utilises le mot photo que je ne trouve nulle part. J&amp;#039;en déduis que c&amp;#039;est une propriété et que tu ne l&amp;#039;as pas déclarée (définie)”.
&lt;/p&gt;

&lt;p&gt;
A nous donc de déclarer les variables auxquelles nous ferons référence.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; AvecFlou &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; masque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; photo:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; AvecFlou&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;//… suite …&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Et tout rentre dans l&amp;#039;ordre &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;&lt;br/&gt;
 
Je vous le signale, non pas pour que vous travailliez dans ce mode (à vous de voir) mais surtout pour que si un jour la bestiole se mettait à vous crier des insultes de ce genre, vous puissiez aller vérifier si un malintentionné quelconque n&amp;#039;aurait pas décoché cette fichue case à votre insu (pas vous par inadvertance, non, ça jamais…)&lt;br/&gt;

Et puis aussi pour répondre aux légitimes interrogations du type : mais d&amp;#039;où ça sort ? Pourquoi dispos-je de variables que je n&amp;#039;ai pas déclarées (j&amp;#039;en connais qui pinaillent &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;)
&lt;/p&gt;

&lt;p&gt;
Les deux variables masque et photo doivent être accessibles (visibles) partout dans la classe, c&amp;#039;est pourquoi elles sont déclarées dans la classe elle même (on dit qu&amp;#039;elles sont globales).
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;les_proprietes&quot; id=&quot;les_proprietes&quot;&gt;Les propriétés&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
 
Tout irait pour le mieux dans le meilleur des mondes si Ronchon ne s&amp;#039;avisait que c&amp;#039;est quand même dommage que le flou soit toujours de 10. Si il veut 15 ou 70 il faut écrire deux autres classes ? Il ne va pas en fabriquer une par valeur quand même ?! Il lui faudrait une propriété… Il faudrait qu&amp;#039;il puisse écrire dans le fla quelque chose du genre :

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;clipDemo.&lt;span class=&quot;me1&quot;&gt;flou&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Et bien ! Il n&amp;#039;a qu&amp;#039;à écrire une méthode appliqueFlou à qui il passera une valeur pour le flou en x, une autre pour le flou en y, répondez vous immédiatement, maintenant que vous savez faire.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// le fla&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; test&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	clipDemo.&lt;span class=&quot;me1&quot;&gt;appliqueFlou&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// .as&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; appliqueFlou&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pFlouX:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;,pFlouY:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pFlouX,pFlouY,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Mmmoui… mais non, argumente-t-il. Pour lui c&amp;#039;est plus une propriété, ça caractérise son clip. C&amp;#039;est quand même dommage qu&amp;#039;on ne puisse pas écrire :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; marche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	Demo1.&lt;span class=&quot;me1&quot;&gt;flouX&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;;
	Demo1.&lt;span class=&quot;me1&quot;&gt;flouY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Qui a dit qu&amp;#039;on ne pouvait pas ? On ne sait pas, nuance.&lt;br/&gt;

Et bien découvrons &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;accesseurs_settergetter&quot; id=&quot;accesseurs_settergetter&quot;&gt;Accesseurs (setter/getter)&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

On le sait, on dit d&amp;#039;une propriété qu&amp;#039;elle est en lecture quand on peut l&amp;#039;interroger, en écriture quand on peut la valoriser. Le plus souvent elles sont en lecture/écriture (on dit aussi lecture/définition). &lt;br/&gt;
 
Au point où on en est, on va fabriquer deux propriétés (flouX et flouY) en lecture/écriture.&lt;br/&gt;

Ça s&amp;#039;obtient à l&amp;#039;aide de fonctions dites &lt;strong&gt;fonctions d&amp;#039;accesseur&lt;/strong&gt; (du verbe accéder) qui ont la particularité d&amp;#039;utiliser le mot &lt;strong&gt;get&lt;/strong&gt; ou &lt;strong&gt;set&lt;/strong&gt; selon qu&amp;#039;elle seront utilisées en lecture (get) ou en écriture (set).&lt;br/&gt;

Vous rencontrerez souvent l&amp;#039;anglissisme getter/setter.&lt;br/&gt;

Ces méthodes bizarres (on les appelle méthodes accesseur) requièrent un nombre précis* de paramètres et sont utilisées comme de bêtes propriétés : &lt;code&gt;DemoFlou.flouX=75;&lt;/code&gt; ou &lt;code&gt;var valeurFlouX:Number= DemoFlou.flouX;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;* un et un seul paramètre pour set&lt;/em&gt;&lt;br/&gt;

&lt;em&gt;   aucun paramètres pour pour get&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Pour &lt;strong&gt;écrire&lt;/strong&gt; (définir) :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; flouX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pFlouX:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pFlouX,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Pour &lt;strong&gt;lire&lt;/strong&gt;, on fait la même ou chose ou presque, la même fonction accesseur (&lt;strong&gt;même nom&lt;/strong&gt;) mais cette fois utilisant le mot get et en renvoyant du Number (puisque c&amp;#039;est le type requis avec BlurFilter).
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;get&lt;/span&gt; flouX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ??????
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Ah mais oui… retourne quoi ? Où l&amp;#039;a-t-on la dernière valeur appliquée au flou x ?&lt;br/&gt;

Nulle part &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_sad.gif&quot; class=&quot;middle&quot; alt=&quot;:(&quot; /&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Pas grave, on le fait. Dans le setter flouX  (&lt;code&gt;function set flouX&lt;/code&gt;) il faut non seulement appliquer le flou, mais aussi mémoriser la valeur pour pouvoir la récupérer, plus tard, à la lecture. Pour mémoriser une valeur on utilise une variable. Elle doit être visible partout, on la déclare donc en globale (dans le bloc de la classe) et privée parce que ça ne regarde que nous, c&amp;#039;est de la cuisine interne.&lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _flouX:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Voilà pour la propriété flouX de Ronchon, je vous laisse faire le flouY ?
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; AvecFlou &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; masque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; photo:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _flouX:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; AvecFlou&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_flouX,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
			photo.&lt;span class=&quot;me1&quot;&gt;mask&lt;/span&gt;=masque;
			photo.&lt;span class=&quot;me1&quot;&gt;cacheAsBitmap&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;co1&quot;&gt;// Accesseurs flouX&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; flouX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pFlouX:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_flouX=pFlouX;
			masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pFlouX,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;get&lt;/span&gt; flouX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; _flouX;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;variable_publique&quot; id=&quot;variable_publique&quot;&gt;variable publique&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Une autre technique pour écrire une propriété de classe c&amp;#039;est de déclarer une variable globale et publique (afin qu&amp;#039;elle soit accessible de l&amp;#039;extérieur de la classe - c&amp;#039;est le propre d&amp;#039;une propriété -)
&lt;/p&gt;

&lt;p&gt;
L&amp;#039;avantage c&amp;#039;est que c&amp;#039;est vite fait.&lt;br/&gt;

Les inconvénients sont au nombre de deux :&lt;br/&gt;

• On ne peut les restreindre à la seule lecture&lt;br/&gt;

• On ne peut rien en faire en même temps. Je m&amp;#039;explique : dans le cas qui nous occupe on aurait été contents avec une bête variable déclarée au niveau de la classe, genre :&lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; AvecFlou &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; masque:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; photo:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; flouX:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;;
        &lt;span class=&quot;co1&quot;&gt;//[… suite ]&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

Et alors ? Certes elle est accessible et valorisable de l&amp;#039;extérieur : &lt;code&gt;DemoFlou.flouX=75;&lt;/code&gt;, mais ça ne change pas le filtre…
Dans le même cadre on ne peut pas non plus avec une simple variable limiter les valeurs acceptées ou les modifier.&lt;br/&gt;

Par exemple, un accesseur comme celui-ci, permettrait de limiter une propriété vitesse à 100…&lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; vitesse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pVitesse:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	_vitesse= pVitesse&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;?&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,pVitesse
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;div class=&quot;wrap_tip wrap_bg&quot;&gt;
Tout bien pesé :&lt;br/&gt;

&lt;strong&gt;il est toujours préférable &lt;br/&gt;

d&amp;#039;avoir recours aux accesseurs&lt;/strong&gt;. 
&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;synthese_classe_de_base&quot; id=&quot;synthese_classe_de_base&quot;&gt;Synthèse : Classe de base&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;//les imports&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; NomClasse &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// variables d'instances, quand la case déclarer les occurrences est cochée&lt;/span&gt;
		&lt;span class=&quot;co1&quot;&gt;//public var nomInstance:Type;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;co1&quot;&gt;// variables globales privées ou publiques&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _unePrivee:&lt;span class=&quot;kw3&quot;&gt;Type&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//valorisée ou non;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; unePublique:&lt;span class=&quot;kw3&quot;&gt;Type&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//valorisée ou non;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;co1&quot;&gt;// variables d'accesseur&lt;/span&gt;
                &lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; _uneProp:&lt;span class=&quot;kw3&quot;&gt;Type&lt;/span&gt;=…
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;//-------------------------------------------------------------&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// constructeur&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; NomClasse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;// traitements&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;//-------------------------------------------------------------&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// méthodes&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; uneMethode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;Type&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;// traitements&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;//-------------------------------------------------------------&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// propriétés accesseur  &lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;set&lt;/span&gt; uneProp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pUneProp:&lt;span class=&quot;kw3&quot;&gt;Type&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			_uneProp=…;
			&lt;span class=&quot;co1&quot;&gt;//traitements&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;get&lt;/span&gt; uneProp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;Type&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; _uneProp;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;div class=&quot;wrap_important wrap_bg&quot;&gt;
&lt;strong&gt;A noter&lt;/strong&gt;&lt;br/&gt;

Puisqu&amp;#039;il s&amp;#039;agit d&amp;#039;associer cette classe à un symbole de bibliothèque de type MovieClip, tout naturellement le modèle proposé ci-dessus étend la classe MovieClip.&lt;br/&gt;

Sachez que si, et seulement si, le clip associé ne contient qu&amp;#039;une image vous pouvez vous contenter d&amp;#039;étendre la classe Sprite. En effet Sprite est mère de MovieClip, les méthodes et propriétés spécifiques à MovieClip ont toutes à voire avec le scénario et la gestion de la tête de lecture. En l&amp;#039;absence de scénario, la classe Sprite peut “suffire”. Méfiez vous cependant, vous ne pourrez pas non plus ajouter du code sur les images du clip. Essayez un simple &lt;code&gt;trace(“un truc”);&lt;/code&gt; vous constaterez l&amp;#039;erreur suivante : &lt;code&gt;1180: Appel à une méthode qui ne semble pas définie, addFrameScript&lt;/code&gt;. (Nous reviendrons sur cette méthode au chapitre classe classique [lien qui va venir])&lt;br/&gt;

Sauf excellente raison, &lt;strong&gt;privilégiez&lt;/strong&gt; donc la classe &lt;strong&gt;MovieClip&lt;/strong&gt;.
&lt;/div&gt;
&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;mise_en_œuvre&quot; id=&quot;mise_en_œuvre&quot;&gt;Mise en œuvre&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

A titre de mise en œuvre et afin d&amp;#039;illustrer l&amp;#039;intérêt de la classe de base je vous propose de réfléchir à ça :
&lt;/p&gt;

&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;800&quot; height=&quot;600&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1/planmeublesmediabox.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;800&quot; height=&quot;600&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1/planmeublesmediabox.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Imaginez que vous ayez ce type de chose à réaliser.&lt;br/&gt;

La partie graphiste de votre personnalité veut ne pas avoir à se préoccuper de quoi que ce soit d&amp;#039;autre que de fabriquer des clips aux visuels divers et variés pour figurer le mobilier, d&amp;#039;en organiser joliment une ou plusieurs instances sur la scène, quitte à les déformer (le lit, par exemple, est réduit dans l&amp;#039;inventaire).
&lt;/p&gt;

&lt;p&gt;
C&amp;#039;est alors que la partie programmeur vient à la rescousse en se disant que somme toute, tous les symboles “mobilier” se comportent de la même façon…&lt;br/&gt;

Tous ces clips admettent le glissé/lâché, pivotent sur clic, reprennent position, orientation et échelle originales quand ils sont lâchés hors du plan…&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
C&amp;#039;est le contexte typique pour écrire une classe qui décrira ces comportements communs à chaque objet. &lt;strong&gt;Une seule classe pour plusieurs symboles&lt;/strong&gt;, ce sera donc une &lt;strong&gt;classe de base&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Comment la penser ?&lt;br/&gt;

Si vous aviez du écrire le code dans le fla. (On dirait qu&amp;#039;on connaissait pas les classes &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;…)&lt;br/&gt;

Certainement auriez-vous écrit “dans le symbole”. Vous auriez dédié un calque au code dans le symbole Mv_Fauteuil (par exemple), souscrit deux écouteurs : un sur souris enfoncée pour déclencher un startDrag, un autre sur souris relâchée pour déclencher un stopDrag (plus quelques lignes pour gérer le retour à l&amp;#039;inventaire en cas de position hors plan).&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// [A]&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// mémoriser les coordonnées et l'échelle d'origine&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; xDep:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;x&lt;/span&gt;;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; yDep:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt;;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; scaleDep:&lt;span class=&quot;kw3&quot;&gt;Number&lt;/span&gt;=&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;scaleX&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; plan:&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;=&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;plan&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// [B]&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Ajouter les écouteurs&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;MOUSE_DOWN&lt;/span&gt;,f_Enfonce&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;MOUSE_UP&lt;/span&gt;,f_Lache&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;buttonMode&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// [C]&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// les fonctions souscrites&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; f_Enfonce&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me.&lt;span class=&quot;me1&quot;&gt;altKey&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;!&lt;/span&gt; me.&lt;span class=&quot;me1&quot;&gt;shiftKey&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;rotation&lt;/span&gt;+=&lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;;
		&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me.&lt;span class=&quot;me1&quot;&gt;altKey&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;me.&lt;span class=&quot;me1&quot;&gt;shiftKey&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;rotation&lt;/span&gt;-=&lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;;
		&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;scaleX&lt;/span&gt;=leClip.&lt;span class=&quot;me1&quot;&gt;scaleY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;startDrag&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; f_Lache&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;stopDrag&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;hitTestObject&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;plan&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;co1&quot;&gt;// Touche le plan&lt;/span&gt;
		&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Plan.&lt;span class=&quot;me1&quot;&gt;mouseX&lt;/span&gt;-&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;0 
		|| plan.&lt;span class=&quot;me1&quot;&gt;mouseX&lt;/span&gt;+&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;plan.&lt;span class=&quot;kw3&quot;&gt;width&lt;/span&gt;
		|| plan.&lt;span class=&quot;me1&quot;&gt;mouseY&lt;/span&gt;+&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;plan.&lt;span class=&quot;kw3&quot;&gt;height&lt;/span&gt;
		|| plan.&lt;span class=&quot;me1&quot;&gt;mouseY&lt;/span&gt;-&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;// déborde du plan : retour ds l'inventaire&lt;/span&gt;
			replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;co1&quot;&gt;//  Hors plan :  retour ds l'inventaire&lt;/span&gt;
		replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Attribue les coordonnées, l'échelle et la rotation d'origine&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;x&lt;/span&gt;=&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;xDep&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt;=&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;yDep&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;scaleX&lt;/span&gt;=&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;scaleY&lt;/span&gt;=&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;scaleDep&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;rotation&lt;/span&gt;=0;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;em&gt;Avec ou sans &lt;code&gt;this&lt;/code&gt;, puisque c&amp;#039;est l&amp;#039;objet par défaut et que ne rien écrire c&amp;#039;est écrire &lt;code&gt;this&lt;/code&gt;…&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Et bien, (quasi) pareil dans la classe :&lt;br/&gt;

Les lignes [A] et [B] qui sont exécutées quoiqu&amp;#039;il arrive pour chaque instance posée sur la scène, doivent donc se retrouver dans le constructeur pour les unes [B] et dans le bloc classes pour les variables [A]&lt;br/&gt;

Quant aux fonctions [C] elles sont définies dans le corps de la classe.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Ecrire une classe associée à un symbole c&amp;#039;est la même chose qu&amp;#039;écrire dans le symbole lui même, aux  imports près… &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;&lt;br/&gt;

L&amp;#039;avantage c&amp;#039;est que c&amp;#039;est bien plus facile/rapide/maintenable de fabriquer une classe que de copier coller des blocs entiers de code d&amp;#039;un symbole sur l&amp;#039;autre…
&lt;/p&gt;

&lt;p&gt;

&lt;span class=&quot;wrap_important&quot;&gt;
Ici on considère que les instances seront initialement posées sur la scène ainsi qu&amp;#039;un clip nommé plan. On se compliquera la vie plus tard &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;events&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;MouseEvent&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; PlanMeubles &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;co1&quot;&gt;//les variables globales [A]&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; PlanMeubles&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;// les écouteurs et le buttonMode [B]&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// [C]&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; f_Enfonce&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;// ce qui se passe quand on enfonce la souris&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; f_Lache&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;co1&quot;&gt;// ce qui se passe quand on relâche la souris&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			x=xDep;
			y=yDep;
			scaleX=scaleY=scaleDep;
			rotation=0;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;div class=&quot;wrap_download&quot;&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1/planmeubles.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1:planmeubles.zip&quot;&gt;les sources (fla + as)&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;

Voilà pour le principe et le cadre d&amp;#039;utilisation des classes de base. Quand vous aurez fini de jouer avec le plan, et que vous vous sentirez à l&amp;#039;aise avec ces quelques principes fondamentaux, je vous propose de me rejoindre page suivante pour corser un peu les choses.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge --&amp;gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>Nataly</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Mon, 26 Jul 2010 17:24:44 +0200</pubDate>
        </item>
        <item>
            <title>Classe associée à un symbole de bibliothèque</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque</link>
            <description>
&lt;h1&gt;&lt;a name=&quot;classe_associee_a_un_symbole_de_bibliotheque&quot; id=&quot;classe_associee_a_un_symbole_de_bibliotheque&quot;&gt;Classe associée à un symbole de bibliothèque&lt;/a&gt;&lt;/h1&gt;&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as3.png?w=27&quot; alt=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par Nataly, le 10 mai 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc&quot;&gt;Introduction&lt;/a&gt;&lt;br/&gt;

&lt;strong&gt;&lt;span class=&quot;curid&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;Classe de base (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales&quot;&gt;Héritage et surcharge (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales1&quot;&gt;Héritage et surcharge (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/boitesmodales2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:boitesmodales2&quot;&gt;Diffuser des événements&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque2&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque2&quot;&gt;Classe liée&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/classedoc&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:classedoc&quot;&gt;Classe de document&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse&quot;&gt;Classe externe : une visionneuse (#1)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/visionneuse1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:visionneuse1&quot;&gt;Classe externe : une visionneuse (#2)&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/static&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:static&quot;&gt;Classe externe : méthodes statiques&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;

&lt;h1&gt;&lt;a name=&quot;classe_de_base_1&quot; id=&quot;classe_de_base_1&quot;&gt;Classe de base (#1)&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Nous allons commencer notre randonnée découverte avec la classe de base, c&amp;#039;est de mon point de vue la plus utile des deux, même si c&amp;#039;est souvent à tort la classe liée qui est donnée en exemple.&lt;br/&gt;

On écrit ce type de classe, je le rappelle, quand on veut &lt;strong&gt;étendre&lt;/strong&gt; (enrichir) &lt;strong&gt;les fonctionnalités d&amp;#039;un clip&lt;/strong&gt; donc lui &lt;strong&gt;ajouter&lt;/strong&gt; des &lt;strong&gt;méthodes&lt;/strong&gt; et/ou des &lt;strong&gt;propriétés&lt;/strong&gt; et/ou des &lt;strong&gt;événements&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;fabriquer_le_clip&quot; id=&quot;fabriquer_le_clip&quot;&gt;Fabriquer le clip&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Je vous propose, pour nous simplifier la vie dans un premier temps, de dédier un dossier (répertoire) à nos essais et d&amp;#039;y enregistrer un fichier .fla (&lt;code&gt;DemoClasseBase.fla&lt;/code&gt; chez moi).
Puisqu&amp;#039;on est dans le cadre &amp;#039;étendre les capacités d&amp;#039;un symbole Clip&amp;#039;, fabriquons-en un (un simple rectangle suffira).&lt;br/&gt;

Dans l&amp;#039;idée d&amp;#039;associer à ce symbole une future classe, avant de valider, il faut prendre soin de cocher la case exporter pour ActionScript. Si vous avez procédé par conversion d&amp;#039;une forme, appelez la fenêtre propriétés d&amp;#039;un clic droit dans la bibliothèque.
&lt;/p&gt;

&lt;p&gt;
Que se passe-t-il quand on coche la fameuse case ?
&lt;/p&gt;

&lt;p&gt;
D&amp;#039;abord le champ &lt;code&gt;Classe&lt;/code&gt; est automatiquement rempli du nom du symbole et le champ &lt;code&gt;Classe de base&lt;/code&gt; contient flash.display.MovieClip
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/exporter.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:exporter.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/exporter.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

Ensuite quand on valide un avertissement surgit (sauf à ce que vous ayez coché depuis longtemps la case Ne plus afficher) :
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/avertissement.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:avertissement.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/avertissement.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;Une définition sera générée automatiquement dans le fichier swf lors de l&amp;#039;exportation&lt;/em&gt;… Diantre !
&lt;/p&gt;

&lt;p&gt;
Une définition de quoi ?&lt;br/&gt;

De classe. &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Hé oui en cochant cette brave case, une classe se fabrique dans l&amp;#039;arrière boutique de flash sans que nous en sachions trop rien.&lt;br/&gt;

Et cette classe (&lt;code&gt;Mv_Truc&lt;/code&gt; dans l&amp;#039;exemple) a pour classe de base flash.display.MovieClip.
Comprendre : la classe &lt;code&gt;Mv_Truc&lt;/code&gt; sait faire tout ce que sait faire un MovieClip (méthodes : stop, play, nextFrame…) dispose de toutes ses caractéristiques (propriétés : currentFrame, enabled…), diffuse les mêmes événements (removed…), et en plus a ses propres bidules ; des formes, des champs texte, des animations et autres clips, graphiques ou boutons, voire même du code. Je dis &amp;#039;bidules&amp;#039;, vous m&amp;#039;en excuserez : sur ce coup là le parler juste ne ferait que semer l&amp;#039;embrouille &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;&lt;br/&gt;

Vite dit : notre classe Mv_Truc (avec son malheureux rectangle) c&amp;#039;est une classe MovieClip en mieux, elle sait faire tout ce que sait faire un MovieClip et en plus affiche un rectangle. On dit qu&amp;#039;elle étend (les capacités) de la classe MovieClip. (je me répète ? &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_mrgreen.gif&quot; class=&quot;middle&quot; alt=&quot;:mrgreen:&quot; /&gt;)&lt;br/&gt;

On dit aussi que &lt;strong&gt;Mv_Truc hérite de MovieClip&lt;/strong&gt; ou encore la classe &lt;strong&gt;MovieClip est&lt;/strong&gt; la classe &lt;strong&gt;mère de Mv_Truc&lt;/strong&gt;. Un peu comme ronchon qui a hérité son caractère de sa mère et y a ajouté son propre goût pour l&amp;#039;informatique. &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt; 
&lt;/p&gt;

&lt;p&gt;
Ce qu&amp;#039;on se propose de faire, c&amp;#039;est &lt;strong&gt;fabriquer une classe à nous qui étendra la classe MovieClip et sera elle même étendue par Mv_Truc&lt;/strong&gt;. Ainsi toutes les instances de Mv_Truc seront elles douées des mêmes capacités/caractéristiques que les MovieClip, plus celles de notre classe, plus celles propres à Mv_Truc.
&lt;/p&gt;

&lt;p&gt;
Fabriquons donc cette classe !
&lt;/p&gt;

&lt;p&gt;
(Tel que nous l&amp;#039;abandonnons -provisoirement- le .fla dispose seulement d&amp;#039;un symbole dans sa bibliothèque et la scène est vide)
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;


&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;fabriquer_la_classe&quot; id=&quot;fabriquer_la_classe&quot;&gt;Fabriquer la classe&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;creer_le_fichier&quot; id=&quot;creer_le_fichier&quot;&gt;Créer le fichier&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Créons un fichier .as dans le même répertoire que le fla (j&amp;#039;y tiens) il portera le nom de la classe (chez moi DemoBase.as).
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/nouveaufichieras.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque:nouveaufichieras.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/nouveaufichieras.jpg?w=789&amp;amp;h=288&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;789&quot; height=&quot;288&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/aspageblanche.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque:aspageblanche.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/aspageblanche.jpg?w=637&amp;amp;h=239&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;637&quot; height=&quot;239&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Et voilà : l&amp;#039;angoisse de la page blanche ! &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_biggrin.gif&quot; class=&quot;middle&quot; alt=&quot;:D&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;


&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;le_code&quot; id=&quot;le_code&quot;&gt;Le code&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;

Bon… Le début c&amp;#039;est toujours pareil, ça ne se comprend pas ça s&amp;#039;apprend c&amp;#039;est comme ça : toute classe doit être déclarée au sein d&amp;#039;un paquetage - pour des question d&amp;#039;organisation mais on y reviendra - un paquetage ça se dit package en anglais alors zou !
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

Ça c&amp;#039;est fait.&lt;br/&gt;

Ensuite il s&amp;#039;agit d&amp;#039;y déclarer une classe qui s&amp;#039;appelle DemoBase et qui étend la classe MovieClip (je vous ai suffisamment bassinés avec le verbe pour qu&amp;#039;on n&amp;#039;y revienne pas). En anglais/AS ça s&amp;#039;écrit comme ça :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DemoBase &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Traduit : voici une classe publique (visible et utilisable par tous) qui s&amp;#039;appelle DemoBase qui étend la classe MovieClip.
&lt;/p&gt;

&lt;p&gt;
&lt;span class=&quot;wrap_important wrap_bg&quot;&gt;
&lt;strong&gt;Attention&lt;/strong&gt; à bien écrire class (&lt;strong&gt;sans majuscule&lt;/strong&gt;) et non Class  &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/span&gt;
&lt;/p&gt;

&lt;p&gt;
Ce à quoi il va falloir être vigilant à partir de maintenant, c&amp;#039;est à l&amp;#039;import des classes (les autres). Aussi longtemps que l&amp;#039;on écrit dans l&amp;#039;IDE de flash on n&amp;#039;a pas à s&amp;#039;en préoccuper (ou rarement), les classes les plus fréquemment utilisées sont importées par défaut. Quand on écrit image 1 de la scène &lt;code&gt;stop()&lt;/code&gt;, on utilise bien une méthode de MovieClip mais on ne se préoccupe pas de demander à flash de nous mettre le gros outil MovieClip à disposition, c&amp;#039;est fait.&lt;br/&gt;

Quand on écrit une classe, plus rien d&amp;#039;implicite, il faut se charger de tout.&lt;br/&gt;

Qu&amp;#039;à cela ne tienne, importer la classe MovieClip, c&amp;#039;est une pauvre ligne qu&amp;#039;on ajoute dans la foulée avant la déclaration de classe.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DemoBase &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Ayé ! On a une classe &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:)&quot; /&gt;&lt;br/&gt;

Qui ne fait rien, qui n&amp;#039;a aucune caractéristique propre, et qui est aussi muette qu&amp;#039;un poisson &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_sad.gif&quot; class=&quot;middle&quot; alt=&quot;:(&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;


&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;ajouter_une_methode&quot; id=&quot;ajouter_une_methode&quot;&gt;Ajouter une méthode&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

On va donc lui ajouter une méthode - qu&amp;#039;on ait quelque chose à tester - disons &lt;code&gt;test&lt;/code&gt;, au hasard.
Quand nous aurons associé la classe à un clip, nous pourrons appliquer la méthode &lt;code&gt;test&lt;/code&gt; à n&amp;#039;importe quelle instance de ce clip, avec la syntaxe qu&amp;#039;on connait par cœur :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// le fla&lt;/span&gt;
&amp;nbsp;
monClip.&lt;span class=&quot;me1&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;

 
La méthode &lt;code&gt;test&lt;/code&gt; n&amp;#039;est rien d&amp;#039;autre qu&amp;#039;une fonction qui doit être déclarée dans la classe et accessible depuis l&amp;#039;extérieur, donc publique.
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
&amp;nbsp;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DemoBase &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; test&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;je passe dans test&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Et voilà, la classe DemoBase sait faire tout ce que sait faire un objet de classe MovieClip, et en plus sait écrire “je passe dans test” dans la fenêtre de sortie quand on utilise sa méthode &lt;code&gt;test&lt;/code&gt;.&lt;br/&gt;

Vérifions…
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;


&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;associer_la_classe_et_le_symbole&quot; id=&quot;associer_la_classe_et_le_symbole&quot;&gt;Associer la classe et le symbole&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour vérifier, il faut &lt;strong&gt;associer&lt;/strong&gt; cette classe &lt;strong&gt;DemoBase au symbole&lt;/strong&gt; qui s&amp;#039;ennuie dans la bibliothèque du .fla.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;Ne vous y trompez pas : tout à l&amp;#039;heure on n&amp;#039;a rien associé. On a regardé ce qui se passait quand on coche la case Exporter pour ActionScript et conclu qu&amp;#039;il nous fallait une classe à glisser entre MovieClip dont le clip hérite naturellement et lui même pour l&amp;#039;enrichir des fonctionnalités de la dite classe.&lt;/em&gt;&lt;br/&gt;
 
&lt;/p&gt;

&lt;p&gt;
Retour au fla, donc → propriétés du clip → dans le champ classe de base on saisit DemoBase (sans l&amp;#039;extension le compilateur s&amp;#039;en doute).
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/propclassebase.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:propclassebase.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/propclassebase.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Notez le crayon à droite, si vous cliquez dessus et que vous avez ôté les moufles (pas de faute de frappe) vous devez être dirigé sur le code as, sinon il crie :
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/avertissement2.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:avertissement2.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/avertissement2.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

Validez, posez une instance du clip sur la scène, nommez la.&lt;br/&gt;

Dans la fenêtre action appliquez la toute fraiche méthode test à l&amp;#039;instance (&lt;code&gt;leClip.test()&lt;/code&gt;), exécutez… Parfait.&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code trace&quot;&gt;je passe dans test&lt;/pre&gt;
&lt;p&gt;
Ça ne surprend personne : quand on pose une instance d&amp;#039;un clip quelconque sur la scène et qu&amp;#039;on utilise la méthode &lt;code&gt;play&lt;/code&gt;, hop ça marche ! Je veux dire ça lit…&lt;br/&gt;

Et bien pareil pour une instance de classe personnelle, on la pose sur la scène, elle dispose d&amp;#039;une méthode supplémentaire -&lt;code&gt;test&lt;/code&gt;- qu&amp;#039;on utilise et hop  ça marche ! Enfin, ça trace… 
&lt;/p&gt;
&lt;div class=&quot;wrap_tip&quot;&gt;
Si rien ne se passe c&amp;#039;est probablement que vous avez oublié d&amp;#039;enregistrer le fichier as…
&lt;/div&gt;
&lt;p&gt;
Juste pour jouer, ajoutons un bouton à la scène :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;btMarche.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,jeTeste&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; jeTeste &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	leClip.&lt;span class=&quot;me1&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;


&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;une_methode_marche&quot; id=&quot;une_methode_marche&quot;&gt;Une méthode marche&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;wrap_indent&quot;&gt;
&lt;strong&gt;Tout chaud extrait du forum :&lt;/strong&gt;&lt;br/&gt;
&lt;div class=&quot;wrap_quote wrap_yellow&quot;&gt;
Blague à part, j&amp;#039;ai lu pas mal de trucs, mais ça reste toujours très théorique, et les exemples tournent souvent autour d&amp;#039;un bête trace (t&amp;#039;as vu t&amp;#039;as vu ça fait çaaaaa). :? 
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Ronchon qui se sent moins seul d&amp;#039;un coup émerge de derrière on écran.&lt;br/&gt;

Ok…&lt;br/&gt;

Je vous propose de &lt;strong&gt;transformer&lt;/strong&gt; la méthode &lt;strong&gt;test&lt;/strong&gt; qui ne sert à rien &lt;strong&gt;en méthode marche&lt;/strong&gt; qui fera avancer le clip d&amp;#039;autant de pixels que passés en paramètre (comme là ↓).
&lt;/p&gt;

&lt;p&gt;

&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;250&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/democlassebase1.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;250&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/democlassebase1.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
Si vous tracez &lt;code&gt;this&lt;/code&gt; et &lt;code&gt;this.name&lt;/code&gt; dans la nouvelle méthode &lt;code&gt;marche&lt;/code&gt;, vous constatez qu&amp;#039;il s&amp;#039;agit bien d&amp;#039;un clip de type &lt;code&gt;Mv_Truc&lt;/code&gt; et qu&amp;#039;il porte le nom que vous lui avez donné :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DemoBase &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; marche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code trace&quot;&gt;[object Mv_Truc]
leClip&lt;/pre&gt;
&lt;p&gt;
… du coup ajouter un paramètre à la méthode &lt;code&gt;marche&lt;/code&gt; et modifier la propriété x (ou y ou les deux, zetes grands), vous n&amp;#039;avez besoin de personne…
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DemoBase &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; marche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pX:&lt;span class=&quot;kw3&quot;&gt;int&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			x+=pX;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Comme on est des malins on a défini une valeur par défaut pour le paramètre : &lt;code&gt;pX:int=10&lt;/code&gt;. Ça permet d&amp;#039;utiliser la méthode sans argument et sans déclencher d&amp;#039;erreur… &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_idea.gif&quot; class=&quot;middle&quot; alt=&quot;:idea:&quot; /&gt;  
&lt;/p&gt;

&lt;p&gt;
Pas plus, et vous pouvez faire avancer différentes instances à des vitesses différentes :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;btMarche.&lt;span class=&quot;me1&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MouseEvent.&lt;span class=&quot;me1&quot;&gt;CLICK&lt;/span&gt;,marche&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; marche &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	leClip.&lt;span class=&quot;me1&quot;&gt;marche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	leClip2.&lt;span class=&quot;me1&quot;&gt;marche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;250&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/democlassebase2.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;250&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/democlassebase2.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;


&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;ne_confondez_pas&quot; id=&quot;ne_confondez_pas&quot;&gt;Ne confondez pas&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ah… Les raisons de l&amp;#039;agitation de Ronchon ne sont pas celles que je croyais.&lt;br/&gt;

“Je le savais bien que c&amp;#039;était pareil !” triomphe-t-il.&lt;br/&gt;

Il l&amp;#039;a vu partout : on aurait pu aussi bien renseigner le champ Classe du panneau de propriétés. Il vient de vérifier : c&amp;#039;est pareil, ça marche aussi !
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/champclasse1.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:champclasse1.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/champclasse1.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Effectivement, ça marche aussi, mais ce n&amp;#039;est pas pareil &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;&lt;br/&gt;

Pour preuve : suivons l&amp;#039;idée de Ronchon et renseignons le champ Classe du panneau de propriétés comme reproduit ci-dessus. On dispose d&amp;#039;un rectangle qu&amp;#039;on peut instancier autant qu&amp;#039;on veut et chacune des instances peut “marcher”.&lt;br/&gt;

Parfait, ça nous plait bien et on veut la même chose non pas seulement pour un rectangle rouge, mais aussi pour une pastille jaune ou un éléphant rose…&lt;br/&gt;

On crée un nouveau symbole avec tiens, une pastille jaune, et puis la routine : appeler ses propriétés, cocher la case exporter pour ActionScript, saisir &lt;code&gt;DemoClasse&lt;/code&gt; dans le champ Classe… Valider… Et on se fait crier &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_sad.gif&quot; class=&quot;middle&quot; alt=&quot;:(&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/nomclasseunique.png?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:nomclasseunique.png&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/nomclasseunique.png&quot; class=&quot;media&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
On l&amp;#039;a vu (&lt;a href=&quot;#cote_clip_s&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque &amp;crarr;&quot; class=&quot;wikilink1&quot;&gt;ici&lt;/a&gt;) : cocher la case Exporter pour ActionScript &lt;em&gt;génère automatiquement une définition dans le fichier swf lors de l&amp;#039;exportation&lt;/em&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Maintenant qu&amp;#039;on sait comment se &lt;del&gt;construit&lt;/del&gt; définit une classe, on peut se représenter ce qui se passe dans l&amp;#039;arrière boutique : une classe que nous aurions écrite comme suit a été générée :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DemoBase &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Mais comme nous en avons nous même défini une, c&amp;#039;est cette dernière qui est prise en considération.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Tant que nous ne l&amp;#039;avions associée qu&amp;#039;au clip Mv_Truc, DemoBase héritait de MovieClip et en plus affichait un rectangle. Si nous recommençons avec un autre clip (Mv_Pastille par exemple) Alors cette même classe devra hériter de MovieClip et en plus afficher un cercle… &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_eek.gif&quot; class=&quot;middle&quot; alt=&quot;8-o&quot; /&gt; Ben ?! &amp;#039;Faut savoir !! Un rectangle ou un cercle ?! &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_eek.gif&quot; class=&quot;middle&quot; alt=&quot;8-O&quot; /&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Alors que si nous associons DemoBase à la classe de base, la définition de Mv_Truc est celle-ci :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Mv_Truc &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; DemoBase &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Et rien ne nous empêche d&amp;#039;avoir une &lt;br/&gt;


&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Mv_Pastille &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; DemoBase &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
C&amp;#039;est ce que nous avions compris depuis le début &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; marche&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;me:MouseEvent&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	leClip.&lt;span class=&quot;me1&quot;&gt;marche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	leClip2.&lt;span class=&quot;me1&quot;&gt;marche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
	laPastille.&lt;span class=&quot;me1&quot;&gt;marche&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;250&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/democlassebase3.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;250&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/democlassebase3.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;
&lt;br/&gt;

&lt;br/&gt;

&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/crobherit.jpg?id=tutoriaux%3Aflashplatform%3Aprogrammation%3Apoo_bases%3Aclassesqqc%3Abibliotheque&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque:crobherit.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque/crobherit.jpg?w=245&quot; class=&quot;media&quot; alt=&quot;&quot; width=&quot;245&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;


&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;la_fonction_constructeur&quot; id=&quot;la_fonction_constructeur&quot;&gt;La fonction constructeur&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

J&amp;#039;en vois un qui s&amp;#039;impatiente et voudrait bien du concret. On y vient, juste encore un peu de théorie, pour parler de la fonction constructeur et on aura tout ce qu&amp;#039;il faut pour s&amp;#039;y attaquer - au concret.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Le constructeur&lt;/strong&gt;, donc, c&amp;#039;est une fonction particulière qui &lt;strong&gt;est automatiquement invoqué&lt;/strong&gt;e quand on crée une instance de la classe en question.&lt;br/&gt;

Elle doit avoir le &lt;strong&gt;nom de la classe&lt;/strong&gt; et être &lt;strong&gt;publique&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;package &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; DemoBase &lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; DemoBase&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
			&lt;span class=&quot;kw3&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;constructeur DemoBase &amp;quot;&lt;/span&gt;+ &lt;span class=&quot;kw3&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
		&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// ... suite ...&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Enregistrez et testez : la fenêtre sortie affiche un trace par clip présent sur la scène. En effet dans l&amp;#039;arrière cuisine de flash, le fait que nous ayons posé un clip sur la scène a été traduit par ce que nous aurions écrit :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; clip:Mv_Truc= &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Mv_Truc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
clip.&lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;leClip&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// clip.x= ...&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// etc.&lt;/span&gt;
addChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;clip&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
A la ligne &lt;code&gt;var clip:Mv_Truc= new Mv_Truc()&lt;/code&gt; une instance est crée, le constructeur invoqué.
&lt;/p&gt;

&lt;p&gt;
C&amp;#039;est donc &lt;strong&gt;dans la fonction constructeur&lt;/strong&gt; qu&amp;#039;&lt;strong&gt;auront lieu les initialisations&lt;/strong&gt; et tout ce qui doit se faire quoiqu&amp;#039;il arrive… 
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;


&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;mise_en_œuvre&quot; id=&quot;mise_en_œuvre&quot;&gt;Mise en œuvre&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

Maintenant qu&amp;#039;on a les idées bien claires, et avant d&amp;#039;aller plus loin, voyons ce qu&amp;#039;on peut faire de qui a été vu jusque là.
&lt;/p&gt;

&lt;p&gt;
Imaginons qu&amp;#039;on soit en situation de fabriquer un nombre certain de clips qui auront tous en commun un clip contenant une image (&lt;code&gt;photo&lt;/code&gt;) masqué par un autre clip (&lt;code&gt;masque&lt;/code&gt;), le masque étant affligé d&amp;#039;un filtre flou. Les images peuvent être animées ou pas et les masques de formes différentes.
Ça nous oblige à chaque fois à trois lignes de codes, toujours les mêmes, placées sur la première image du clip en question… &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/affichage/animation/lesmasques/masquecode#autre_exemple&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:affichage:animation:lesmasques:masquecode&quot;&gt;ce qui défrise Ronchon&lt;/a&gt;, à l&amp;#039;initiative de qui nous sommes là (je tiens à le rappeler, toutes doléances devant lui être directement adressées &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;)&lt;br/&gt;

Le comment du pourquoi est &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/affichage/animation/lesmasques/masquecode#appliquer_un_masque&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:affichage:animation:lesmasques:masquecode&quot;&gt;détaillé ici&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Les trois lignes donc on les connait :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;masque.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; BlurFilter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_flouX,_flouY,BitmapFilterQuality.&lt;span class=&quot;me1&quot;&gt;HIGH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
photo.&lt;span class=&quot;me1&quot;&gt;mask&lt;/span&gt;=masque;
photo.&lt;span class=&quot;me1&quot;&gt;cacheAsBitmap&lt;/span&gt;=&lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
En assumant le fait qu&amp;#039;il existe un clip photo et un clip masque (pour le masque).
&lt;/p&gt;

&lt;p&gt;
Donc tous les clip “sauront” appliquer &lt;code&gt;masque&lt;/code&gt; à &lt;code&gt;photo&lt;/code&gt; et auront leurs bidules propres (des photos spécifiques entre autres). On est en plein dans le cadre de la classe. Classe de base donc, puisque plusieurs clips différents devront en hériter.&lt;br/&gt;

Cette classe ne dispose d&amp;#039;aucune méthode ou propriété (pour l&amp;#039;instant) mais quoi qu&amp;#039;il arrive elle appliquera un filtre au clip masque, et le reste…&lt;br/&gt;

Donc ça s&amp;#039;écrit dans le constructeur.
&lt;/p&gt;

&lt;p&gt;
Parfait vous savez tout ce qu&amp;#039;il faut pour vous débrouiller tous seuls, si ce n&amp;#039;est les classes à importer. Pour cette fois je vous les donne :
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;display&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;MovieClip&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BitmapFilterQuality&lt;/span&gt;;
	&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt; flash.&lt;span class=&quot;me1&quot;&gt;filters&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BlurFilter&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Ensuite vous n&amp;#039;aurez plus qu&amp;#039;à construire autant de clips que vous voudrez, les associer à cette classe et sans plus une ligne de code vous obtiendrez des choses comme ça. En mieux… N&amp;#039;est-ce pas Ronchon ? &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
[illustr]
&lt;/p&gt;

&lt;p&gt;
Allez ! Je vous laisse faire, ma série télé commence &lt;img src=&quot;http://ressources.mediabox.fr/lib/images/smileys/icon_wink.gif&quot; class=&quot;middle&quot; alt=&quot;;)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
On se retrouve &lt;a href=&quot;http://ressources.mediabox.fr/tutoriaux/flashplatform/programmation/poo_bases/classesqqc/bibliotheque1&quot; class=&quot;wikilink1&quot; title=&quot;tutoriaux:flashplatform:programmation:poo_bases:classesqqc:bibliotheque1&quot;&gt;là&lt;/a&gt; pour la suite (et le corrigé).
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>Nataly</author>
        <category>tutoriaux:flashplatform:programmation:poo_bases:classesqqc</category>
            <pubDate>Mon, 26 Jul 2010 17:23:48 +0200</pubDate>
        </item>
        <item>
            <title>Jeux de voiture</title>
            <link>http://ressources.mediabox.fr/tutoriaux/flashplatform/jeux/jeux_voiture_simple</link>
            <description>
&lt;h1&gt;&lt;a name=&quot;jeux_de_voiture&quot; id=&quot;jeux_de_voiture&quot;&gt;Jeux de voiture&lt;/a&gt;&lt;/h1&gt;&lt;noscript class=&quot;datambplugin_pageinfo&quot;&gt;Activez JavaScript pour une utilisation optimale.&lt;/noscript&gt;
&lt;div id=&quot;datambplugin_pageinfo&quot;&gt;&lt;div id=&quot;pageinfo__header&quot;&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as1.png?w=27&quot; alt=&quot;Compatible ActionScript 1 et 2. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 1 et 2. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/as2.png?w=27&quot; alt=&quot;Compatible ActionScript 2. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible ActionScript 2. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/flash.png?w=27&quot; alt=&quot;Compatible Flash. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible Flash. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/flash8.png?w=27&quot; alt=&quot;Compatible Flash 8. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible Flash 8. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/flashmx.png?w=27&quot; alt=&quot;Compatible Flash MX. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible Flash MX. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/flashmx2004.png?w=27&quot; alt=&quot;Compatible Flash MX 2004. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible Flash MX 2004. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://ressources.mediabox.fr/aide/compatibilite&quot; class=&quot;wikiMarker&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/compatibilite/flashcs3.png?w=27&quot; alt=&quot;Compatible Flash CS3. Cliquer pour en savoir plus sur les compatibilités.&quot; title=&quot;Compatible Flash CS3. Cliquer pour en savoir plus sur les compatibilités.&quot; width=&quot;27&quot; /&gt;&lt;/a&gt;&lt;span&gt;Par ibrahim (ibrahim zarouni), le 23 juillet 2010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
                var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                if(pageinfo) {
                    pageinfo.style.display   = &quot;none&quot;;
                    var header = document.getElementById(&quot;pageinfo__header&quot;);
    
                    var obj          = document.createElement(&quot;span&quot;);
                    obj.id           = &quot;pageinfo__toggle&quot;;
                    obj.innerHTML    = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className    = &quot;pageinfo_open&quot;;
                    obj.style.cursor = &quot;pointer&quot;;
                    
                    prependChild(header,obj);
                    obj.parentNode.onclick = togglePageInfo;
                    try {
                        obj.parentNode.style.cursor = &quot;pointer&quot;;
                        obj.parentNode.style.cursor = &quot;hand&quot;;
                    }catch(e){}
                }
                
                function togglePageInfo() {
                  var pageinfo = document.getElementById(&quot;pageinfo__inside&quot;);
                  var obj = document.getElementById(&quot;pageinfo__toggle&quot;);
                  if(pageinfo.style.display == &quot;none&quot;) {
                    pageinfo.style.display   = &quot;&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;&amp;minus;&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_close&quot;;
                  } else {
                    pageinfo.style.display   = &quot;none&quot;;
                    obj.innerHTML       = &quot;&lt;span&gt;+&lt;/span&gt;&quot;;
                    obj.className       = &quot;pageinfo_open&quot;;
                  }
                }
                --&gt;&lt;/script&gt;

&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

Bonjour,
&lt;br/&gt;
 Dans ce premier tutoriel, nous réaliserons ensemble un petit jeux de voiture simple en mode solo, cette dernière sera manipuler par les touches du clavier , pour cela nous utiliserons Flash 8 et de l&amp;#039;Actionscript 2
&lt;/p&gt;

&lt;p&gt;

&lt;!--[if !IE]&gt; --&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;350&quot; type=&quot;application/x-shockwave-flash&quot; data=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/jeux/jeux_voiture_simple/voiture.swf&quot; &gt;
&lt;!-- &lt;![endif]--&gt;
&lt;!--[if IE]&gt;
&lt;object class=&quot;media&quot; width=&quot;500&quot; height=&quot;350&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; &gt;
    &lt;param name=&quot;movie&quot; value=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/jeux/jeux_voiture_simple/voiture.swf&quot; /&gt;
&lt;!--&gt;&lt;!-- --&gt;
  &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;
L&quot;extension &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; est nécessaire pour afficher ce contenu.
&lt;/object&gt;
&lt;!-- &lt;![endif]--&gt;

&lt;/p&gt;
&lt;div class=&quot;wrap_prerequis&quot;&gt;
&lt;strong&gt;Prérequis&lt;/strong&gt;
&lt;p&gt;
Pour pouvoir suivre ce tutoriel vous n&amp;#039;avez besoin d&amp;#039;aucun pré-requis sauf celui du bon sens.

&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;creation_des_movies_clip&quot; id=&quot;creation_des_movies_clip&quot;&gt;Création des movies clip&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
- Créez trois calque &lt;strong&gt;circuit&lt;/strong&gt;, &lt;strong&gt;forme&lt;/strong&gt; et &lt;strong&gt;actions&lt;/strong&gt;.
&lt;br/&gt;
 - Dessinez deux formes , une première forme qui représente la &lt;strong&gt;voiture&lt;/strong&gt; et une deuxième qui représente un &lt;strong&gt;obstacle&lt;/strong&gt; que vous placerez dans le calque &lt;strong&gt;forme&lt;/strong&gt;, après avoir importer une image de votre choix (fichier –&amp;gt; importer) dans le calque &lt;strong&gt;circuit&lt;/strong&gt;.
&lt;br/&gt;
 afin de créer vos Clip, transformer les formes déjà crées (la voiture et l&amp;#039;obstacle) en movie clip.
&lt;br/&gt;
 - Selectionez la forme &lt;strong&gt;voiture&lt;/strong&gt; puis cliquer sur F8 pour créer un premier clip que vous nommerez &lt;strong&gt;voiture&lt;/strong&gt;
&lt;br/&gt;
 - Dans la boîte de dialogue qui apparaît, indiquez le nom &lt;strong&gt;voiture&lt;/strong&gt; et cochez le bouton radio &lt;strong&gt;Movie clip&lt;/strong&gt; puis cliquez sur le bouton &lt;strong&gt;OK&lt;/strong&gt;.
comme le montre l&amp;#039;image ci-dessous.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/jeux/jeux_voiture_simple/calque_circuit_forme_clip.jpg?id=tutoriaux%3Aflashplatform%3Ajeux%3Ajeux_voiture_simple&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:jeux:jeux_voiture_simple:calque_circuit_forme_clip.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/jeux/jeux_voiture_simple/calque_circuit_forme_clip.jpg&quot; class=&quot;media&quot; title=&quot;calque_circuit_forme_clip.jpg&quot; alt=&quot;calque_circuit_forme_clip.jpg&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
procédez ainsi pour créer le deuxième clip &lt;strong&gt;obstacle&lt;/strong&gt;.
donc : &lt;br/&gt;
 - Selectionez la forme &lt;strong&gt;obstacle&lt;/strong&gt; puis cliquer sur F8 pour créer un premier clip que vous nommerez &lt;strong&gt;obstacle&lt;/strong&gt;
&lt;br/&gt;
 - Dans la boîte de dialogue qui apparaît, indiquez le nom &lt;strong&gt;obstacle&lt;/strong&gt; et cochez le bouton radio &lt;strong&gt;Movie clip&lt;/strong&gt; puis cliquez sur le bouton &lt;strong&gt;OK&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Sélectionnez le movie clip &lt;strong&gt;obstacle&lt;/strong&gt; et dans l&amp;#039;onglet Propriété, donnez un nom d&amp;#039;instance pour le movie clip &lt;strong&gt;obstacle&lt;/strong&gt; par exemple &lt;strong&gt;obstacle_mc&lt;/strong&gt;. ainsi ce dernier vous permettra d&amp;#039;intervenir sur le clip &lt;strong&gt;obstacle&lt;/strong&gt; en ActionScript de n&amp;#039;importe où dans l&amp;#039;application.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://ressources.mediabox.fr/_detail/tutoriaux/flashplatform/jeux/jeux_voiture_simple/nom_instance_obstacle.jpg?id=tutoriaux%3Aflashplatform%3Ajeux%3Ajeux_voiture_simple&quot; class=&quot;media&quot; title=&quot;tutoriaux:flashplatform:jeux:jeux_voiture_simple:nom_instance_obstacle.jpg&quot;&gt;&lt;img src=&quot;http://ressources.mediabox.fr/_media/tutoriaux/flashplatform/jeux/jeux_voiture_simple/nom_instance_obstacle.jpg&quot; class=&quot;media&quot; title=&quot;nom_instance_obstacle.jpg&quot; alt=&quot;nom_instance_obstacle.jpg&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
procédez ainsi et nommer l&amp;#039;instance du Clip &lt;strong&gt;voiture&lt;/strong&gt; par &lt;strong&gt;voiture_mc&lt;/strong&gt;.
&lt;br/&gt;
 Sélectionnez le movie clip &lt;strong&gt;voiture&lt;/strong&gt; et dans l&amp;#039;onglet Propriété, donnez un nom d&amp;#039;instance pour le movie clip &lt;strong&gt;voiture&lt;/strong&gt; par exemple &lt;strong&gt;voiture_mc&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;initialisations&quot; id=&quot;initialisations&quot;&gt;Initialisations&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Sélectionnez le calque &lt;strong&gt;actions&lt;/strong&gt; puis tapez F9, Ecrivez ceci dans la fenêtre qui s&amp;#039;affiche c&amp;#039;est de l&amp;#039;actionscript, ce n&amp;#039;est pas sorcier 
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;voiture_mc.&lt;span class=&quot;kw3&quot;&gt;onLoad&lt;/span&gt; = &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	voiture_mc.&lt;span class=&quot;me1&quot;&gt;x&lt;/span&gt; = 0;
	voiture_mc.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt; = 0;
	voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt; = 0;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;

Ainsi lors du chargement du clip &lt;strong&gt;voiture&lt;/strong&gt;, les variables x, y et vitesse propre à l&amp;#039;instance voiture_mc seront initialisés à 0, par défaut elles le sont . &lt;br/&gt;
 mais ce n&amp;#039;est pas toujours le cas pour flash 2004 et d&amp;#039;autres.

&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;gestion_de_la_rotation&quot; id=&quot;gestion_de_la_rotation&quot;&gt;Gestion de la rotation&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Sous le même morceau de code prècedant : 
&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt; &lt;span class=&quot;kw3&quot;&gt;onClipEvent&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
 placez ceci:

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;voiture_mc.&lt;span class=&quot;kw3&quot;&gt;onEnterFrame&lt;/span&gt; = &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;//acceleration en avant &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;isDown&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;UP&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;co1&quot;&gt;//si le bouton directionnelle haut est enfoncé &lt;/span&gt;
		voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt; += &lt;span class=&quot;nu0&quot;&gt;0.7&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;//acceleration en arrière           &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;isDown&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;DOWN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt; -= &lt;span class=&quot;nu0&quot;&gt;0.4&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;//_rotation à gauche de la voiture             &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;isDown&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;LEFT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		voiture_mc.&lt;span class=&quot;kw3&quot;&gt;_rotation&lt;/span&gt; -= &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;//_rotation à droite de la voiture             &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;isDown&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;RIGHT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		voiture_mc.&lt;span class=&quot;kw3&quot;&gt;_rotation&lt;/span&gt; += &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;// limite l'acceleration sinon notre petite voiture se transformera en fusé      &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Math&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;= &lt;span class=&quot;nu0&quot;&gt;0.9&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;

jusqu&amp;#039;à présent seule la rotation est fonctionnelle puisque c&amp;#039;est une propriété propre aux movie clip 
&lt;br/&gt;
 tandis que les variables la vitesse , x et y ne le sont pas.
&lt;br/&gt;
 Le code est assez simple ainsi les commentaires dans ce dernier sont assez explicite. 
&lt;/p&gt;

&lt;p&gt;
Dans le second chapitre on verra le déplacement de la &lt;strong&gt;voiture&lt;/strong&gt; en avant et en arrière.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;a name=&quot;deplacement&quot; id=&quot;deplacement&quot;&gt;Déplacement&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Voici le nouveau code qui gère le déplacement en avant et en arrière de la &lt;strong&gt;voiture&lt;/strong&gt; , vous l&amp;#039;aurez remarquez on a simplement ajouter quatre autres lignes : 

&lt;/p&gt;
&lt;pre class=&quot;code actionscript&quot;&gt;voiture_mc.&lt;span class=&quot;kw3&quot;&gt;onEnterFrame&lt;/span&gt; = &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;//acceleration en avant &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;isDown&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;UP&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;co1&quot;&gt;//si le bouton directionnelle haut est enfoncé &lt;/span&gt;
		voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt; += &lt;span class=&quot;nu0&quot;&gt;0.7&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;//acceleration en arrière           &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;isDown&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;DOWN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt; -= &lt;span class=&quot;nu0&quot;&gt;0.4&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;//_rotation à gauche de la voiture             &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;isDown&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;LEFT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		voiture_mc.&lt;span class=&quot;kw3&quot;&gt;_rotation&lt;/span&gt; -= &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;//_rotation à droite de la voiture             &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;isDown&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Key&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;RIGHT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		voiture_mc.&lt;span class=&quot;kw3&quot;&gt;_rotation&lt;/span&gt; += &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;// limite l'acceleration sinon notre petite voiture se transformera en fusé      &lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Math&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;= &lt;span class=&quot;nu0&quot;&gt;0.9&lt;/span&gt;;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;// determine la position x en fonction de la vitesse    &lt;/span&gt;
	voiture_mc.&lt;span class=&quot;me1&quot;&gt;x&lt;/span&gt; = &lt;span class=&quot;kw3&quot;&gt;Math&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;cos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;voiture_mc.&lt;span class=&quot;kw3&quot;&gt;_rotation&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Math&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;PI&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;180&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt;;
	&lt;span class=&quot;co1&quot;&gt;// determine la position y en fonction de la vitesse    &lt;/span&gt;
	voiture_mc.&lt;span class=&quot;me1&quot;&gt;y&lt;/span&gt; = &lt;span class=&quot;kw3&quot;&gt;Math&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;sin&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;voiture_mc.&lt;span class=&quot;kw3&quot;&gt;_rotation&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;Math&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;PI&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;180&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;voiture_mc.&lt;span class=&quot;me1&quot;&gt;vitesse&lt;/span&gt;;
	&lt;span class=&quot;co1&quot;&gt;//_x est une coordonnée de la voiture &lt;/span&gt;
	voiture_mc.&lt;span class=&quot;kw3&quot;&gt;_x&lt;/span&gt; += voiture_mc.&lt;span class=&quot;