<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>Walldown : Portail d'assistance internet</title>
	<link>http://www.walldown.com/</link>
	<description>Ce portail est fait pour vous guider dans le labyrinthe des nouvelles technologies de l'information et de la communication. Walldown vous propose conseils, codes sources, t&#233;l&#233;chargements et mise en relations dans les domaines suivants : webdesign, cr&#233;ation de site, cr&#233;ation flash, visite virtuelle, reportage vid&#233;o, reportage photos, professionnels, internet, programmation, jeux mmorpg, dofus, librairies DLL ...</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>




<item xml:lang="fr">
		<title>transfert s&#233;curis&#233; des donn&#233;es de flash vers le serveur</title>
		<link>http://www.walldown.com/transfert-securise-des-donnees-de.html</link>
		<guid isPermaLink="true">http://www.walldown.com/transfert-securise-des-donnees-de.html</guid>
		<dc:date>2008-05-01T13:55:14Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Klaude Charlier</dc:creator>



		<description>1- Une page charge le fichier flash 2- Lors de l'initialisation, le fichier flash va charger une page PHP qui va contenir des variables. Parmis celle ci, un identifiant unique qui identifiera &quot;la session flash&quot; et qui sera g&#233;n&#233;r&#233; par php (avec un md5(time()) ou tout autre moyen que tu souhaite) 3- Lors de l'envoi du score, Flash renvoi cet identifiant dans la requete (ou bien crypte une donn&#233;e avec cette information, qui sert en sorte de &quot;cl&#233; de cryptage&quot; La page PHP qui recoit le score (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;img src=&quot;http://www.walldown.com/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; 1- Une page charge le fichier flash
&lt;br /&gt;&lt;img src=&quot;http://www.walldown.com/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; 2- Lors de l'initialisation, le fichier flash va charger une page PHP qui va contenir des variables. Parmis celle ci, un identifiant unique qui identifiera &quot;la session flash&quot; et qui sera g&#233;n&#233;r&#233; par php (avec un md5(time()) ou tout autre moyen que tu souhaite)
&lt;br /&gt;&lt;img src=&quot;http://www.walldown.com/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; 3- Lors de l'envoi du score, Flash renvoi cet identifiant dans la requete (ou bien crypte une donn&#233;e avec cette information, qui sert en sorte de &quot;cl&#233; de cryptage&quot;&lt;/p&gt; &lt;p&gt;La page PHP qui recoit le score peut maintenant faire les verifications suivantes parmi celles ci selon la technique employ&#233;e :
&lt;br /&gt;&lt;img src=&quot;http://www.walldown.com/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; 4- La cl&#233; de cryptage existe (il faudra penser a la sauvegarder dans une base de donn&#233;es auparavent)
&lt;br /&gt;&lt;img src=&quot;http://www.walldown.com/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; 5- Si une cl&#233; de cryptage a &#233;t&#233; utilis&#233;e pour renvoyer un score, on peut supposer que c'est une tentative de piratage, donc annuler le score (voir annuler tout les scores du joueur si tu as un moyen de l'identifier ;o) : Cela suppose de changer de cl&#233; de cryptage a chaque &quot;nouvelle partie&quot;, mais Flash peut tres bien en demander une a PHP n'importe quand, donc pas de probleme&lt;/p&gt; &lt;div class='spip_document_136 spip_documents spip_documents_center'&gt; &lt;object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0' width='350' height='200'&gt; &lt;param name='movie' value='IMG/swf/md5.swf' /&gt; &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt; &lt;param name='class' value='' /&gt; &lt;!--[if !IE]&gt; &lt;--&gt; &lt;object data=&quot;IMG/swf/md5.swf&quot; width='350' height='200' type=&quot;application/x-shockwave-flash&quot;&gt; &lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt; &lt;param name='class' value='' /&gt; &lt;param name=&quot;pluginurl&quot; value=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt; &lt;/object&gt; &lt;!--&gt; &lt;![endif]--&gt;
&lt;/object&gt; &lt;/div&gt;
&lt;p&gt;Encore 2 pistes &#224; explorer :
* le fichier PHP qui genere la page HTML qui contient le flash peut lui passer des variables dans l'url : fichier.swf ?truc=machin. C'est pas s&#233;curis&#233;, mais ca peut aider.
* Le fichier Flash a acces a quelques variables globales permettant de faire des verifications (par exemple tu peux verifier que l'url en cours correspond bien a ton domaine... ca evite le vol du fichier et surtout le test de solutions de piratage ailleurs que depuis ton domaine (donc tu complique la tache du gars)
A noter que tout ca doit bien sur s'accompagner d'un cryptage du fichier flash avec un long mot de passe introuvable ;o)&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les filtres</title>
		<link>http://www.walldown.com/Les-filtres.html</link>
		<guid isPermaLink="true">http://www.walldown.com/Les-filtres.html</guid>
		<dc:date>2008-04-28T14:06:52Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Kevin</dc:creator>



		<description>Tutorial source : yazo.net Lorsque vous travaillez &#224; travers l'interface de Flash, vous pouvez appliquer un filtre &#224; une occurrence &#224; l'aide de la palette &#233;ponyme situ&#233;e par d&#233;faut en bas &#224; gauche de votre interface, &#224; c&#244;t&#233; des palettes Propri&#233;t&#233;s et Param&#232;tres. Nos entendons par filtres les ombres port&#233;es, lueurs et les autres effets de ce genre. Si vous souhaitez appliquer une ombre ou tout autre effet &#224; une occurrence dynamiquement, &#224; partir de lignes d'instructions, proc&#233;dez ainsi : 1. (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Tutorial source : &lt;a href='http://www.yazo.net/index.php?option=com_content&amp;task=view&amp;id=26&amp;Itemid=40' class='spip_out'&gt;yazo.net&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Lorsque vous travaillez &#224; travers l'interface de Flash, vous pouvez appliquer un filtre &#224; une occurrence &#224; l'aide de la palette &#233;ponyme situ&#233;e par d&#233;faut en bas &#224; gauche de votre interface, &#224; c&#244;t&#233; des palettes Propri&#233;t&#233;s et Param&#232;tres. Nos entendons par filtres les ombres port&#233;es, lueurs et les autres effets de ce genre. Si vous souhaitez appliquer une ombre ou tout autre effet &#224; une occurrence dynamiquement, &#224; partir de lignes d'instructions, proc&#233;dez ainsi :&lt;/p&gt; &lt;p&gt;1. Placez un clip sur la sc&#232;ne.&lt;br /&gt; 2. Nommez l'occurrence obtenue. Exemple : titre&lt;br /&gt; 3. Saisissez le script ci-dessous dans la fen&#234;tre Actions.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;import flash.filters.DropShadowFilter ;&lt;br /&gt; &lt;br /&gt; var ombrePortee:DropShadowFilter = new DropShadowFilter() ;&lt;br /&gt; var serieDeFiltres:Array = new Array() ;&lt;br /&gt; serieDeFiltres.push(ombrePortee) ;&lt;br /&gt; &lt;br /&gt; titre.filters=serieDeFiltres ;&lt;/p&gt; &lt;p&gt;Ligne 1 : Elle permet de pr&#233;ciser quel filtre va &#234;tre travaill&#233;.&lt;br /&gt;
Ligne 2 : Un filtre est concr&#232;tement cr&#233;&#233;.&lt;br /&gt;
Ligne 3 : Nous cr&#233;ons une liste vide.&lt;br /&gt;
Ligne 4 : Nous ajoutons &#224; cette liste, le filtre que nous avons cr&#233;&#233;.&lt;br /&gt;
Ligne 5 : Nous attribuons un filtre &#224; l'occurrence titre.&lt;br /&gt;
&lt;br /&gt;
Si vous devez cr&#233;er d'autres filtres, voici la liste de ceux que vous pouvez utiliser :&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;BevelFilter, BlurFilter, DropShadowFilter, GlowFilter, GradientBevelFilter, GradientGlowFilter&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;L'ensemble de ces filtres peuvent &#234;tre modifi&#233;s avant qu'ils soient ajout&#233;s &#224; la liste serieDeFiltres en faisant r&#233;f&#233;rence aux propri&#233;t&#233;s &lt;strong&gt;distance, blurX, blurY, angle, strength, quality&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Voici un deuxi&#232;me exemple :&lt;/p&gt; &lt;p&gt;import flash.filters.DropShadowFilter ;&lt;br /&gt; &lt;br /&gt; var ombrePortee:DropShadowFilter = new DropShadowFilter() ;&lt;br /&gt; ombrePortee.quality = BitmapFilterQuality.HIGH ;&lt;br /&gt; ombrePortee.strength = 5 ;&lt;br /&gt; ombrePortee.blurX = 5 ;&lt;br /&gt; ombrePortee.blurY = 5 ;&lt;br /&gt; ombrePortee.distance = 5 ;&lt;br /&gt; ombrePortee.angle = 30 ;&lt;br /&gt; ombrePortee.alpha=0.1 ;&lt;br /&gt; &lt;br /&gt; var serieDeFiltres:Array = new Array() ;&lt;br /&gt; serieDeFiltres.push(ombrePortee) ;&lt;br /&gt; &lt;br /&gt; titre.filters=serieDeFiltres ;&lt;/p&gt; &lt;p&gt;Consultez l'aide de Flash pour d&#233;couvrir l'ensemble des propri&#233;t&#233;s propres &#224; chaque filtre et n'oubliez surtout pas de changer le nom de la classe sur la premi&#232;re ligne &#233;galement.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Les encres&lt;/p&gt; &lt;p&gt;Pour celles et ceux qui connaissent Photoshop et qui ont l'habitude d'utiliser les modes de fusion des calques, les &quot;encres&quot; de Flash proposent le m&#234;me r&#233;sultat. A travers l'interface de Flash, lorsque vous s&#233;lectionnez une commande dans la menu d&#233;roulant qui figure en bas &#224; droite de la palette Propri&#233;t&#233; (&#224; droite du mot Fondu), vous appliquez une encre ou un mode de surrimpression &#224; une occurrence. En ActionScript, la technique d'attribution d'une encre &#224; une occurrence se fait tr&#232;s simplement car une seule ligne d'instruction suffit.&lt;/p&gt; &lt;p&gt;titre.blendMode = BlendMode.ADD ;&lt;/p&gt; &lt;p&gt;Remarque : Le premier &quot;mot&quot; blendMode de la ligne d'instruction ci-dessus est une propri&#233;t&#233;, au m&#234;me titre que rotation, x, scaleX, etc. alors que le deuxi&#232;me mot &quot;BlendMode&quot; est une classe accompagn&#233;e de la constante ADD.&lt;br /&gt; Il existe 14 modes de fusion d'une occurrence, voici les diff&#233;rents termes que vous pouvez utilisez en remplacement de ADD de l'exemple ci-dessus.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;strong&gt;Add, alpha, darken, difference, erase, hardlight, invert, layer, lighten, multiply, normal, overlay, screen, subtract.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Pour finir sur les encres abordons ce dernier exemple. Nous souhaiterions donner un effet &#224; un bouton lors d'un clic, suivez donc cette proc&#233;dure :&lt;/p&gt; &lt;p&gt;1. Placez un clip sur la sc&#232;ne&lt;br /&gt; 2. Nommez l'occurrence obtenue. Exemple : titre&lt;br /&gt; 3. Saisissez le script ci-dessous dans la fen&#234;tre Actions.&lt;/p&gt; &lt;p&gt;titre.addEventListener(MouseEvent.MOUSE_DOWN,btEnfonce)&lt;br /&gt; titre.addEventListener(MouseEvent.MOUSE_UP,btRelache)&lt;br /&gt; &lt;br /&gt; function btEnfonce (evt:MouseEvent) &lt;i&gt;&lt;br /&gt; titre.blendMode = BlendMode.ADD ;&lt;br /&gt; &lt;/i&gt;&lt;br /&gt; function btRelache (evt:MouseEvent) &lt;i&gt;&lt;br /&gt; titre.blendMode = BlendMode.NORMAL&lt;br /&gt; &lt;/i&gt;&lt;/p&gt; &lt;p&gt;Remarque : Sur la version du player 9.0.45, si ce code ne fonctionne pas, effectuez une modification de l'occurrence afin que l'encre soit visible dans la mesure o&#249; la fonction updateAfterEvent() n'a pas d'effet. D&#233;placez l'occurrence d'un pixel ou tournez la d'un degr&#233;.&lt;br /&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Sinus et cosinus</title>
		<link>http://www.walldown.com/Sinus-et-cosinus.html</link>
		<guid isPermaLink="true">http://www.walldown.com/Sinus-et-cosinus.html</guid>
		<dc:date>2008-04-28T13:53:53Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Kevin</dc:creator>



		<description>Tutorial source : yazo.net Dans certains cas, vous aurez besoin de r&#233;aliser des interpolations de mouvements avec des trajectoires cycliques (ex. : circulaires, ondulantes, etc.). Il devient alors difficile de r&#233;aliser un tel mouvement sans passer par les interpolations accompagn&#233;es d'un guide de mouvement. Et pourtant, c'est r&#233;alisable gr&#226;ce aux fonctions sinus et cosinus de la classe Math en ActionScript. Si la manipulation de formules de calculs faisant appel aux cosinus et sinus (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Tutorial source : &lt;a href='http://www.yazo.net/index.php?option=com_content&amp;task=view&amp;id=32&amp;Itemid=47' class='spip_out'&gt;yazo.net&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Dans certains cas, vous aurez besoin de r&#233;aliser des interpolations de mouvements avec des trajectoires cycliques (ex. : circulaires, ondulantes, etc.). Il devient alors difficile de r&#233;aliser un tel mouvement sans passer par les interpolations accompagn&#233;es d'un guide de mouvement. Et pourtant, c'est r&#233;alisable gr&#226;ce aux fonctions sinus et cosinus de la classe Math en ActionScript. Si la manipulation de formules de calculs faisant appel aux cosinus et sinus ne vous pose pas de probl&#232;me, consultez alors directement les derniers exemples de cette ressource, dans le cas contraire, voici un d&#233;veloppement pour vous expliquer le mode de calcul d'un sinus et d'un cosinus. &lt;/p&gt; &lt;p&gt;Remarque : Assurez-vous que la nombre d'images par seconde de votre animation est bien au moins &#224; 30 ips.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;A quoi servent les sinus et cosinus ?&lt;/p&gt; &lt;p&gt;Nous avons pour la plupart d'entre nous de mauvais souvenir de nos cours de Math de 3e car ils &#233;taient pour le moins abstraits. En revanche si nous vous posons cette question&#8230;&lt;/p&gt; &lt;blockquote&gt;
&lt;p&gt;2 + 3 ?&lt;/p&gt; &lt;/blockquote&gt;
&lt;p&gt;&#8230;la r&#233;ponse vous vient automatiquement &#224; l'esprit car le signe &quot;+&quot; vous parle depuis votre plus tendre enfance. La soustraction est &quot;un peu plus compliqu&#233;e&quot; et la division, n'en parlons pas. Et pourtant, les quatre op&#233;rations de base, - + x et &#247; restent des calculs simples &#224; comprendre avec des valeurs simples.&lt;/p&gt; &lt;blockquote&gt;
&lt;p&gt;cos(3) ? ou sin(3) ?&lt;/p&gt; &lt;/blockquote&gt;
&lt;p&gt;Et voil&#224;, vous vous bloquez ! Nous vous l'avons dit, nous allons vous expliquer les cosinus et sinus. Reprenons. Ne cherchez pas &#224; calculer le r&#233;sultat, seul le r&#233;sultat nous int&#233;resse, pas sa technique de calcul. Mais &#224; quoi sert ce r&#233;sultat ? Petit retour en arri&#232;re, &#224; l'&#233;cole, nous utilisions soit une calculette pour effectuer ce calcul, soit une &quot;table&quot; (un document pli&#233; en trois parties, couleur saumon) pr&#233;sentant un tableau des diff&#233;rents r&#233;sultats de calculs de cosinus et sinus. Nous allons utiliser les fonctions Math.cos() et/ou Math.sin() pour obtenir le r&#233;sultat.&lt;/p&gt; &lt;p&gt;Quelle que soit la valeur que vous pr&#233;ciserez entre les parenth&#232;ses, param&#232;tre n&#233;cessaire pour ce calcul, vous obtiendrez toujours une valeur comprise entre -1 et 1. Et alors ? Et bien en faisant varier de fa&#231;on r&#233;guli&#232;re ce fameux param&#232;tre n&#233;cessaire pour le calcul du cosinus ou du sinus, on peut obtenir d'autres valeurs. Quel est l'int&#233;r&#234;t ? Obtenir des valeurs qui repr&#233;senteront un intervalle r&#233;gulier cyclique. Quelles sont les valeurs que vous obtenez entre -1 et 1. Non, il n'y a pas que le 0.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;blockquote&gt;
&lt;p&gt;-1, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 0.9, 0.8&lt;br /&gt; cos(0)...........................................................cos(1.7)...............................................cos(3.1) .........&lt;/p&gt; &lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt; &lt;p&gt;Dans l'exemple ci-dessus, nous d&#233;montrons qu'avec l'augmentation r&#233;guli&#232;re d'une valeur (0 -&gt; 1.7 -&gt; 3.14 -&gt; etc...) &#224; placer dans le calcul du cosinus, on obtient toujours les m&#234;mes valeurs (1 -&gt; 0 -&gt; -1 -&gt; 0 -&gt; 1 -&gt; 0 -&gt; -1). Pour &#234;tre plus pr&#233;cis et moins ambigu, nous allons augmenter une valeur avec un pas de 0,1 et non de 1,7 (Nous ne voulions pas saisir toutes les valeurs comprises entre 0 et 5 avec un pas de 0,1, c'est pourquoi nous en avons choisi de 2 (1,7 et 3,1)). Mais &#224; quoi peuvent bien servir des valeurs comprises entre -1 et 1 ? Et bien si nous multiplions le r&#233;sultat obtenu par 60 (par exemple), nous obtiendrons donc des valeurs comprises entre -60 &#224; 60. Nous pourrions donc utiliser le r&#233;sultat pour r&#233;gler la position verticale d'une occurrence. C'est ce qui se passe dans l'exemple ci-dessous. Si vous regardez attentivement le script, vous observerez que la valeur 85 a &#233;t&#233; ajout&#233;e &#224; la principale ligne d'instruction d'instruction de notre code, c'est tout simplement pour d&#233;finir l'axe horizontal &#224; partir duquel on va retirer 60 ou ajouter 60 pixels.&lt;/p&gt; &lt;p&gt;var coef = 0 ;&lt;br /&gt; balle.addEventListener(Event.ENTER_FRAME,bougerBalle) ;&lt;br /&gt; &lt;br /&gt; function bougerBalle(evt:Event) &lt;i&gt;&lt;br /&gt; coef+=0.1 ;&lt;br /&gt; balle.y = 85+(Math.sin(coef)*60) ;&lt;br /&gt; &lt;/i&gt;&lt;/p&gt; &lt;div&gt; &lt;object codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0&quot; height=&quot;180&quot; width=&quot;320&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;&gt; &lt;param name=&quot;_cx&quot; value=&quot;8467&quot; /&gt; &lt;param name=&quot;_cy&quot; value=&quot;4763&quot; /&gt; &lt;param name=&quot;FlashVars&quot; VALUE=&quot;&quot; /&gt; &lt;param name=&quot;Movie&quot; value=&quot;http://www.yazo.net/racine/swfdusite/sincos1.swf&quot; /&gt; &lt;param name=&quot;Src&quot; value=&quot;http://www.yazo.net/racine/swfdusite/sincos1.swf&quot; /&gt; &lt;param name=&quot;WMode&quot; value=&quot;Window&quot; /&gt; &lt;param name=&quot;Play&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;Loop&quot; value=&quot;-1&quot; /&gt; &lt;param name=&quot;Quality&quot; value=&quot;High&quot; /&gt; &lt;param name=&quot;SAlign&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;Menu&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;Base&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;AllowScriptAccess&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;Scale&quot; value=&quot;ShowAll&quot; /&gt; &lt;param name=&quot;DeviceFont&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;EmbedMovie&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;BGColor&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;SWRemote&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;MovieData&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;SeamlessTabbing&quot; value=&quot;1&quot; /&gt; &lt;param name=&quot;Profile&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;ProfileAddress&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;ProfilePort&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;AllowNetworking&quot; value=&quot;all&quot; /&gt; &lt;param name=&quot;AllowFullScreen&quot; value=&quot;false&quot; /&gt; &lt;embed src=&quot;racine/swfdusite/sincos1.swf&quot; wmode=&quot;&quot; quality=&quot;high&quot; menu=&quot;false&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;320&quot; height=&quot;180&quot;&gt;&lt;/embed&gt; &lt;/object&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt; &lt;p&gt;Avec une m&#234;me valeur, (ex. 3), le calcul de cosinus et de sinus donnent 2 r&#233;sultats diff&#233;rents. Regardons simplement la liste des valeurs ci-dessous pr&#233;sent&#233;es dans un tableau, elles sont croissantes et r&#233;guli&#232;res. Parall&#232;lement, les r&#233;sultats des calculs de sinus et cosinus (qui utilisent ces valeurs) sont cycliques.&lt;/p&gt; &lt;blockquote&gt; &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;510&quot; border=&quot;0&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Valeurs&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; align=&quot;right&quot;&gt;
&lt;p&gt;0&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,2&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,4&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,6&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,8&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;1&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;1,2&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;1,4&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Cosinus&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;1&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,9801&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,9211&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,8253&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,6967&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,5403&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,3624&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,17&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Sinus&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,1987&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,3894&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,5646&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,7174&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,8415&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,932&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;0,9854&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;
&lt;p&gt; &lt;/p&gt; &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;510&quot; border=&quot;0&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Valeur&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;12%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;1,6&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;1,8&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;2&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;2,2&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;2,4&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;2,6&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;2,8&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;3&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;3,2&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;8%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;Cosinus&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;12%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,0292&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,2272&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,4161&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,5885&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,7374&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,8569&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,9422&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,99&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,9983&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;8%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;Sinus&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;12%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,9996&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,9738&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,9093&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,8085&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,6755&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,5155&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,335&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,1411&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,0584&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;
&lt;p&gt; &lt;/p&gt; &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;510&quot; border=&quot;0&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;8%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;Valeur&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;12%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;3,4&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;3,6&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;3,8&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;4&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;4,2&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;4,4&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;4,6&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;4,8&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;8%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;Cosinus&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;12%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,9668&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,8968&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,791&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,6536&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,4903&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,3073&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,1122&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;0,0875&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;8%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;Sinus&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;12%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,2555&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,4425&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,6119&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,7568&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,8716&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,9516&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,9937&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt;
&lt;p&gt;-0,9962&lt;/p&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;10%&quot; height=&quot;16&quot;&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt; &lt;p&gt;Faire tourner une occurrence autour d'un axe&lt;/p&gt; &lt;p&gt;Si nous combinons donc le calcul d'un sinus et celui d'un cosinus avec la m&#234;me valeur, en les utilisant pour d&#233;finir la position d'une occurrence sur la sc&#232;ne, nous obtenons des positions successives qui formeront un mouvement circulaire. N'oublions pas que nous multiplions le calcul des sinus et cosinus par un chiffre plus grand pour obtenir des valeurs plus grandes. C'est ce qu'on appelle le rayon (60 pixels dans l'exemple ci-dessous).&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt;
&lt;object codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0&quot; height=&quot;180&quot; width=&quot;320&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;&gt; &lt;param name=&quot;_cx&quot; value=&quot;8467&quot; /&gt; &lt;param name=&quot;_cy&quot; value=&quot;4763&quot; /&gt; &lt;param name=&quot;FlashVars&quot; VALUE=&quot;&quot; /&gt; &lt;param name=&quot;Movie&quot; value=&quot;http://www.yazo.net/racine/swfdusite/sincos2.swf&quot; /&gt; &lt;param name=&quot;Src&quot; value=&quot;http://www.yazo.net/racine/swfdusite/sincos2.swf&quot; /&gt; &lt;param name=&quot;WMode&quot; value=&quot;Window&quot; /&gt; &lt;param name=&quot;Play&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;Loop&quot; value=&quot;-1&quot; /&gt; &lt;param name=&quot;Quality&quot; value=&quot;High&quot; /&gt; &lt;param name=&quot;SAlign&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;Menu&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;Base&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;AllowScriptAccess&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;Scale&quot; value=&quot;ShowAll&quot; /&gt; &lt;param name=&quot;DeviceFont&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;EmbedMovie&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;BGColor&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;SWRemote&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;MovieData&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;SeamlessTabbing&quot; value=&quot;1&quot; /&gt; &lt;param name=&quot;Profile&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;ProfileAddress&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;ProfilePort&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;AllowNetworking&quot; value=&quot;all&quot; /&gt; &lt;param name=&quot;AllowFullScreen&quot; value=&quot;false&quot; /&gt; &lt;embed src=&quot;racine/swfdusite/sincos2.swf&quot; wmode=&quot;&quot; quality=&quot;high&quot; menu=&quot;false&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;320&quot; height=&quot;180&quot;&gt;&lt;/embed&gt; &lt;/object&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;var coef = 0 ;&lt;br /&gt; balle.addEventListener(Event.ENTER_FRAME,bougerBalle) ;&lt;br /&gt; &lt;br /&gt; function bougerBalle(evt:Event) &lt;i&gt;&lt;br /&gt; coef+=0.02 ;&lt;br /&gt; &lt;br /&gt; balle.x = 180+(Math.cos(coef)*60) ;&lt;br /&gt; balle.y = 85+(Math.sin(coef)*60) ;&lt;br /&gt; &lt;br /&gt; balleX.x = 180+(Math.cos(coef)*60) ;&lt;br /&gt; balleY.y = 85+(Math.sin(coef)*60) ;&lt;br /&gt; &lt;br /&gt; traitVertical.x = balleX.x ;&lt;br /&gt; traitHorizontal.y = balleY.y ;&lt;br /&gt; &lt;br /&gt; &lt;/i&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Pour faire tourner uniquement la balle, il faut utiliser le script ci-dessous : &lt;/p&gt; &lt;p&gt;var coef = 0 ;&lt;br /&gt; balle.addEventListener(Event.ENTER_FRAME,bougerBalle) ;&lt;br /&gt; &lt;br /&gt; function bougerBalle(evt:Event) &lt;i&gt;&lt;br /&gt; coef+=0.02 ;&lt;br /&gt; &lt;br /&gt; balle.x = 180+(Math.cos(coef)*60) ;&lt;br /&gt; balle.y = 85+(Math.sin(coef)*60) ;&lt;br /&gt; &lt;br /&gt; &lt;/i&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Autres mouvements&lt;/p&gt; &lt;p&gt;Essayez &#224; pr&#233;sent de faire varier les valeurs 60 des deux lignes d'instructions ci-dessus, essayez d'utiliser la fonction Math.abs() avec l'une ou l'autre (ou les deux) des lignes d'instructions ci-dessus et vous d&#233;couvrirez des variantes interessantes dans le mouvement de votre occurrence !!!&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mouvement pendulaire &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Nous rendons absolue la valeur qui sert au calcul du positionnement vertical de l'occurrence.&lt;/p&gt; &lt;p&gt;var coef = 0 ;&lt;br /&gt; balle.addEventListener(Event.ENTER_FRAME,bougerBalle) ;&lt;br /&gt; &lt;br /&gt; function bougerBalle(evt:Event) &lt;i&gt;&lt;br /&gt; coef+=0.1 ;&lt;br /&gt; &lt;br /&gt; balle.x = 180+(Math.cos(coef)*60) ;&lt;br /&gt; balle.y = 85+Math.abs((Math.sin(coef)*60)) ;&lt;br /&gt; &lt;br /&gt; &lt;/i&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mouvement satellite &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Pour effectuer ce type de mouvement, vous devez comprendre que nous cherchons &#224; r&#233;gler l'echelle horizontale et verticale de l'occurrence en mouvement &#224; la valeur relative de sa position verticale.&lt;/p&gt; &lt;p&gt; &lt;/p&gt;
&lt;object codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0&quot; height=&quot;180&quot; width=&quot;320&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;&gt; &lt;param name=&quot;_cx&quot; value=&quot;8467&quot; /&gt; &lt;param name=&quot;_cy&quot; value=&quot;4763&quot; /&gt; &lt;param name=&quot;FlashVars&quot; VALUE=&quot;&quot; /&gt; &lt;param name=&quot;Movie&quot; value=&quot;http://www.yazo.net/racine/swfdusite/satellite.swf&quot; /&gt; &lt;param name=&quot;Src&quot; value=&quot;http://www.yazo.net/racine/swfdusite/satellite.swf&quot; /&gt; &lt;param name=&quot;WMode&quot; value=&quot;Window&quot; /&gt; &lt;param name=&quot;Play&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;Loop&quot; value=&quot;-1&quot; /&gt; &lt;param name=&quot;Quality&quot; value=&quot;High&quot; /&gt; &lt;param name=&quot;SAlign&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;Menu&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;Base&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;AllowScriptAccess&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;Scale&quot; value=&quot;ShowAll&quot; /&gt; &lt;param name=&quot;DeviceFont&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;EmbedMovie&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;BGColor&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;SWRemote&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;MovieData&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;SeamlessTabbing&quot; value=&quot;1&quot; /&gt; &lt;param name=&quot;Profile&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;ProfileAddress&quot; value=&quot;&quot; /&gt; &lt;param name=&quot;ProfilePort&quot; value=&quot;0&quot; /&gt; &lt;param name=&quot;AllowNetworking&quot; value=&quot;all&quot; /&gt; &lt;param name=&quot;AllowFullScreen&quot; value=&quot;false&quot; /&gt; &lt;embed src=&quot;racine/swfdusite/satellite.swf&quot; wmode=&quot;&quot; quality=&quot;high&quot; menu=&quot;false&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;320&quot; height=&quot;180&quot;&gt;&lt;/embed&gt; &lt;/object&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;var coef = 0 ;&lt;br /&gt; balle.addEventListener(Event.ENTER_FRAME,bougerBalle) ;&lt;br /&gt; &lt;br /&gt; function bougerBalle(evt:Event) &lt;i&gt;&lt;br /&gt; coef+=0.1 ;&lt;br /&gt; &lt;br /&gt; balle.x = 180+(Math.cos(coef)*80) ;&lt;br /&gt; balle.y = 85+(Math.sin(coef)*30) ;&lt;br /&gt; &lt;br /&gt; balle.scaleX = 0.1+(balle.y/100) ;&lt;br /&gt; balle.scaleY = 0.1+(balle.y/100) ;&lt;br /&gt; &lt;br /&gt; balle.alpha = 0.1+(balle.y/100)&lt;br /&gt; &lt;br /&gt; &lt;/i&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Ellipse&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Nous changeons simplement la valeur du rayon vertical ou horizontal. &lt;/p&gt; &lt;p&gt;var coef = 0 ;&lt;br /&gt; balle.addEventListener(Event.ENTER_FRAME,bougerBalle) ;&lt;br /&gt; &lt;br /&gt; function bougerBalle(evt:Event) &lt;i&gt;&lt;br /&gt; coef+=0.1 ;&lt;br /&gt; &lt;br /&gt; balle.x = 180+(Math.cos(coef)*120) ;&lt;br /&gt; balle.y = 85+(Math.sin(coef)*60) ;&lt;br /&gt; &lt;br /&gt; &lt;/i&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Rebond&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Semblable au script qui permet d'obtenir un mouvement pendulaire, nous utilisons un rayon avec une valeur n&#233;gative et nous la soustrayons &#224; la position de l'axe horizontal. &lt;/p&gt; &lt;p&gt;var coef = 0 ;&lt;br /&gt; balle.addEventListener(Event.ENTER_FRAME,bougerBalle) ;&lt;br /&gt; &lt;br /&gt; function bougerBalle(evt:Event) &lt;i&gt;&lt;br /&gt; coef+=0.1 ;&lt;br /&gt; &lt;br /&gt; balle.x = 180+(Math.cos(coef)*60) ;&lt;br /&gt; balle.y = 85-Math.abs((Math.sin(coef))*-60) ;&lt;br /&gt; &lt;br /&gt; &lt;/i&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>G&#233;rer la video</title>
		<link>http://www.walldown.com/Gerer-la-video.html</link>
		<guid isPermaLink="true">http://www.walldown.com/Gerer-la-video.html</guid>
		<dc:date>2008-04-28T13:34:32Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Kevin</dc:creator>



		<description>Tutorial source : yazo.net Dans cette ressource, nous allons d&#233;couvrir la simplicit&#233; avec laquelle une vid&#233;o peut-&#234;tre diffus&#233;e sur Internet, mais nous n'allons pas nous limiter &#224; une simple diffusion. En effet, tout l'inter&#234;t de passer par une animation Flash pour proposer &#224; un internaute de consulter une vid&#233;o est de pouvoir combiner les possibilit&#233;s qu'offre l'ActionScript avec la lecture d'un flv (vid&#233;o au format Flash). Si vous n'avez pas besoin d'une r&#233;elle interactivit&#233; lors de la (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Tutorial source : &lt;a href='http://www.yazo.net/index.php?option=com_content&amp;task=view&amp;id=37&amp;Itemid=51' class='spip_out'&gt;yazo.net&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Dans cette ressource, nous allons d&#233;couvrir la simplicit&#233; avec laquelle une vid&#233;o peut-&#234;tre diffus&#233;e sur Internet, mais nous n'allons pas nous limiter &#224; une simple diffusion. En effet, tout l'inter&#234;t de passer par une animation Flash pour proposer &#224; un internaute de consulter une vid&#233;o est de pouvoir combiner les possibilit&#233;s qu'offre l'ActionScript avec la lecture d'un flv (vid&#233;o au format Flash).&lt;/p&gt; &lt;p&gt;Si vous n'avez pas besoin d'une r&#233;elle interactivit&#233; lors de la diffusion d'une vid&#233;o dans un .swf, dans ce cas, vous n'&#234;tes pas oblig&#233; de faire appel &#224; l'ActionScript et seules les premi&#232;res lignes de cette page vous seront utiles. Dans le cas contraire, vous allez d&#233;couvrir qu'il existe de nombreuses possibilit&#233;s d'interactions avec une vid&#233;o !!!&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Encoder une vid&#233;o&lt;/p&gt; &lt;p&gt;Avant d'apprendre &#224; int&#233;grer ou importer dynamiquement une vid&#233;o dans une animation Flash, vous devez apprendre &#224; l'encoder, c'est-&#224;-dire la &quot;compresser&quot; . Il est important de savoir que seuls les formats &lt;strong&gt;.flv&lt;/strong&gt; et &lt;strong&gt;.mov en H264&lt;/strong&gt; sont compatibles &#224; la lecture d'une vid&#233;o dans une animation Flash. Attention, le codec &lt;strong&gt;H264&lt;/strong&gt; n'est reconnu qu'&#224; partir du player Flash version &lt;strong&gt;9,0,115,0&lt;/strong&gt;, n'encodez donc vos vid&#233;os en &lt;strong&gt;.mov&lt;/strong&gt; avec le codec &lt;strong&gt;H264&lt;/strong&gt; uniquement si l'animation Flash v&#233;rifie le num&#233;ro de version du player (consultez la ressource intitul&#233;e &quot;Informations utilisateur&quot; pour savoir comment r&#233;cuperer cette information). D'ici le premier trimestre 2009, cette v&#233;rification ne devrait plus &#234;tre n&#233;cessaire.&lt;/p&gt; &lt;p&gt;Pour encoder une vid&#233;o, il existe de nombreuses solutions logicielles, payantes et gratuites, mais si vous avez install&#233; correctement Flash CS3, l'application Flash CS3 Video Encoder s'est install&#233;e &#233;galement dans le dossier Adobe qui se trouve lui-m&#234;me &#224; la racine du dossier Applications de votre ordinateur. Vous pouvez &#233;galement passer par le logiciel QuickTime Player en le lan&#231;ant, vous retomberez de toutes les fa&#231;ons sur l'interface du Flash CS3 Video Encoder.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;span class='spip_document_49 spip_documents spip_documents_center' &gt;
&lt;img src='http://www.walldown.com/local/cache-vignettes/L400xH75/videoencodage-3994c.png' width='400' height='75' alt=&quot;&quot; style='height:75px;width:400px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;1. Lancez l'application Flash CS3 Video Encoder.&lt;br /&gt; 2. Faites glisser des fichiers de type vid&#233;o que vous souhaitez encoder, dans la fen&#234;tre principale de l'application.&lt;br /&gt; 3. S&#233;lectionnez le ou les fichiers que vous souhaiter encoder avant de cliquer sur le bouton Param&#232;tres. En cliquant sur ce dernier, vous vous apr&#234;tez &#224; sp&#233;cifier les pram&#232;tres de compression des fichiers que vous avez s&#233;l&#233;ctionn&#233;.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_50 spip_documents spip_documents_center' &gt;
&lt;img src='http://www.walldown.com/local/cache-vignettes/L500xH112/videoencoderInterface-89f52.png' width='500' height='112' alt=&quot;&quot; style='height:112px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;4. R&#233;glez les param&#232;tres de compression vid&#233;o et audio, sans oublier de recadrer ou redimensionner l'image de votre s&#233;quence si vous en avez besoin.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Pr&#233;r&#233;glages par d&#233;faut&lt;/p&gt; &lt;p&gt;Si vous ne voulez pas r&#233;gler par vous m&#234;me les diff&#233;rents param&#232;tres que nous allons passer en revue, vous pouvez s&#233;lectionner dans le menu de la copie d'&#233;cran ci-dessous, le profil d'encodage qui effectue pour vous des r&#233;glages de compression audio et vid&#233;o. Attention, choisissez toujours au minimum un profil Flash 8, c'est pr&#233;f&#233;rable si vous souhaiter obtenir une bonne qualit&#233; d'image et optezgalement au minimum pour une qualit&#233; moyenne. Dans le cas o&#249; la diffusion de votre vid&#233;o se ferait off-line (pas sur Internet), s&#233;lectionnez le profil Flash 8 - Qualit&#233; &#233;lev&#233;e. Pour finir, si vous ne sp&#233;ciez pas de nom de fichier de sortie, celui qui sera donn&#233; &#224; chaque fichier encod&#233; sera le nom actuel avec l'extension .flv.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_51 spip_documents spip_documents_center' &gt;
&lt;img src='http://www.walldown.com/local/cache-vignettes/L500xH204/videoprofil-4f7da.png' width='500' height='204' alt=&quot;&quot; style='height:204px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Les r&#233;glages vid&#233;os&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;Avant d'effectuer les premiers r&#233;glages de compression de votre vid&#233;o, si vous en avez besoin, vous pouvez d&#233;finir les points d'entr&#233;e et de sortie de votre s&#233;quence, elle sera alors au final plus courte que la dur&#233;e actuelle, mais vous aurez au moins retir&#233; les premi&#232;res et derni&#232;res images de votre vid&#233;o que vous ne voulez pas voir apparaitre dans votre vid&#233;o encod&#233;e. Faites tout simplement glisser les deux taquets (repr&#233;sent&#233;s par des triangles, entour&#233;s par les carr&#233;s rouges de la copie d'&#233;cran ci-dessous)vers l'int&#233;rieur de la fen&#234;tre, tout en v&#233;rifiant les images qui d&#233;filent dans le haut de la fen&#234;tre.&lt;/p&gt; &lt;p&gt;1. S&#233;lectionnez toujours le codec vid&#233;o On2 VP6.&lt;br /&gt; 2. Ne sp&#233;cifiez pas une qualit&#233; pr&#233;cise (basse, moyenne ou &#233;lev&#233;e), mais saisissez plut&#244;t une valeur dans la case &quot;D&#233;bit de donn&#233;es max. : &quot;. Pour un format d'image de 300 &#224; 500 pixels de largeur, indiquez une valeur comprise entre 350 et 450 kbits. Notons tout de m&#234;me que plus vous sp&#233;cifiez une valeur &#233;lev&#233;e, plus le d&#233;bit de la bande passante de l'internaute doit &#234;tre &#233;lev&#233;. Le conseil le pus sage que nous serions vous donner est de faire vos propres tests de compression, mais ne perdez pas de vue qu'ils devront &#234;tre fait en ligne.&lt;br /&gt; 3. Dans la mesure o&#249; vous ne pouvez pas conna&#238;tre la composition pr&#233;cise d'un s&#233;quence vid&#233;o, il est tr&#232;s difficile de faire un autre choix que de s&#233;lectionner &quot;Automatique&quot; pour l'intervalle des images-cl&#233;s.&lt;br /&gt; 4. Concernant la cadence, conservez la valeur propos&#233;e par d&#233;faut , &quot;Identique &#224; la source&quot;. Si vous souhaitez r&#233;ellement diminuer le nombre d'images par secondes (ips), optez alors pour une valeur correspondant &#224; la moiti&#233; de celle en cours.&lt;br /&gt; 5. Pour finir, ne cochez la case D&#233;sentrelacer que dans le cas o&#249; vous devez encoder uen vid&#233;o qui provient d'une source vid&#233;o (ex. : un fichier .dv). Cochez la case &quot;Coder le canal alpha&quot; unqiuement si votre vid&#233;o poss&#232;de r&#233;ellement une couche alpha, c'est-&#224;-dire une couche qui d&#233;finit des zones de transparence dans la vid&#233;o.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_52 spip_documents spip_documents_center' &gt;
&lt;img src='http://www.walldown.com/local/cache-vignettes/L500xH204/videovideo-7adc8.png' width='500' height='204' alt=&quot;&quot; style='height:204px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Les r&#233;glages audios&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Conservez le r&#233;glage par d&#233;faut qui offre une bonne qualit&#233; d'&#233;coute. D&#233;cochez &#233;ventuellement la case &quot;Coder les donn&#233;es audio&quot; dans le cas o&#249; vous souhaiteriez obtenir une vid&#233;o encod&#233;e sans piste audio.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_53 spip_documents spip_documents_center' &gt;
&lt;img src='http://www.walldown.com/local/cache-vignettes/L500xH84/videoAudio-b6d0b.png' width='500' height='84' alt=&quot;&quot; style='height:84px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Recadrer une vid&#233;o&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Commencez par recadrer votre vid&#233;o avant de la redimensionner. Quel que soit l'ordre de vos r&#233;glages, observez attentivement les dimensions finales de votre vid&#233;o qui figurent en bas &#224; gauche de la fen&#234;tre (720x404 dans l'exemple de la copie d'&#233;cran ci-dessous).&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_54 spip_documents spip_documents_center' &gt;
&lt;img src='http://www.walldown.com/local/cache-vignettes/L500xH177/videorecadrer-8e2a1.png' width='500' height='177' alt=&quot;&quot; style='height:177px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Voil&#224;, vous savez &#224; pr&#233;sent configurer les param&#232;tres de compression d'une vid&#233;o, il ne vous reste plus qu'&#224; faire vos propres tests pour bien vous approprier cette technique qu'est l'encodage d'un fichier.&lt;/p&gt; &lt;p&gt;Placer manuellement une vid&#233;o sur la sc&#232;ne &lt;/p&gt; &lt;p&gt;Pour placer une vid&#233;o sur la sc&#232;ne, vous pouvez le faire de deux fa&#231;ons : Manuellement ou &#224; partir de lignes d'instructions, d&#233;taillons tout de suite l'approche manuelle.&lt;br /&gt;
&lt;br /&gt;
1.Via le menu Fen&#234;tre s&#233;lectionnez la commande Composants.&lt;br /&gt;
2. D&#233;roul&#233; la liste des composants de type Video (clic sur le triangle (Mac) ou sur le carr&#233; contenant le signe plus dans un carr&#233; (Windows).&lt;br /&gt;
3. Faites glisser le composant de type FLVPlayback sur la sc&#232;ne.&lt;br /&gt;
4. Via le menu Fen&#234;tre s&#233;lectionnez la commande Inspecteur de composant.&lt;br /&gt;&lt;span class='spip_document_55 spip_documents spip_documents_center' &gt;
&lt;img src='http://www.walldown.com/local/cache-vignettes/L246xH142/videoflvplayb-357d0.png' width='246' height='142' alt=&quot;&quot; style='height:142px;width:246px;' /&gt;&lt;/span&gt;
&lt;span class='spip_document_56 spip_documents spip_documents_center' &gt;
&lt;img src='http://www.walldown.com/local/cache-vignettes/L300xH220/videoparametresflv-8c085.png' width='300' height='220' alt=&quot;&quot; style='height:220px;width:300px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;5. Cliquez deux fois &#224; droite du mot Source.&lt;br /&gt; 6. Cliquez sur l'ic&#244;ne de r&#233;pertoire situ&#233;e &#224; droite de la fen&#234;tre.&lt;br /&gt; 7. Localisez un fichier au format .flv.&lt;br /&gt; 8. Validez votre choix.&lt;br /&gt; 9. Cochez la case &quot;Ajustez aux dimensions du FLV source&quot; si elle ne l'est pas.&lt;br /&gt; 10. Fermez la fen&#234;tre en cliquant sur le bouton &quot;OK&quot;.&lt;br /&gt; &lt;/p&gt; &lt;p&gt;Voil&#224;, si vous publiez votre animation, vous constaterez que la vid&#233;o se lit correctement. Si vous avez r&#233;alis&#233; cette manipulation sans difficult&#233;, nous vous recommandons d'essayer d'int&#233;grer une vid&#233;o &#224; partir de lignes d'instructions.&lt;br /&gt; &lt;br /&gt; Par ailleurs, vous pouvez &#233;galement int&#233;grer une vid&#233;o manuellement sur la sc&#232;ne (les &#233;tapes 1 &#224; 3 de l'&#233;num&#233;ration ci-dessus) et sp&#233;cifier le chemin &#224; partir d'une ligne d'instruction. Dans ce dernier cas, vous devrez tout de m&#234;me nommer votre occurrence de type FLVPlayback.&lt;br /&gt; &lt;br /&gt; Remarque : Dans la fen&#234;tre qui s'affiche lorsque vous indiquez la &quot;source&quot; d'une occurrence de type FLVPlayback &#224; partir de la fen&#234;tre Inspecteur de composant, il arrive parfois que le &quot;chemin du contenu&quot; soit une adresse absolue et non relative. Vous devez alors supprimer le d&#233;but de l'adresse que Flash a saisi automatiquement pour vous. Ce bug d&#233;montre qu'il est vraiment pr&#233;f&#233;rable d'indiquer la source d'une occurrence de type FLVPlayback &#224; partir de lignes d'instructions&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>O&#249; placer un script ?</title>
		<link>http://www.walldown.com/Ou-placer-un-script.html</link>
		<guid isPermaLink="true">http://www.walldown.com/Ou-placer-un-script.html</guid>
		<dc:date>2005-07-10T22:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Klaude Charlier</dc:creator>



		<description>Tutorial source : yazo.net Dans cette ressource, nous n'allons pas vous apprendre &#224; programmer en objet ou en mode s&#233;quentiel, nous allons simplement vous indiquer les deux proc&#233;dures pour d&#233;marrer la programmation d'une animation. Si vous n'avez jamais programm&#233; et/o&#249; n'avez pas un gros besoin d'interactivit&#233; dans vos animations, favorisez le mode de programmation s&#233;quentielle. Mode de programmation s&#233;quentielle 1. Commencez par cliquez sur une image cl&#233; ou sur les c&#244;t&#233;s (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src=&quot;http://www.walldown.com/local/cache-vignettes/L115xH112/arton103-c5167.jpg&quot; alt=&quot;&quot; align=&quot;right&quot; width='115' height='112' class='spip_logos' style='height:112px;width:115px;' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Tutorial source :
&lt;a href='http://www.yazo.net/index.php?option=com_content&amp;task=view&amp;id=17&amp;Itemid=31' class='spip_out'&gt;yazo.net&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;table&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; colspan=&quot;2&quot;&gt;
&lt;p&gt;Dans cette ressource, nous n'allons pas vous apprendre &#224; programmer en objet ou en mode s&#233;quentiel, nous allons simplement vous indiquer les deux proc&#233;dures pour d&#233;marrer la programmation d'une animation. Si vous n'avez jamais programm&#233; et/o&#249; n'avez pas un gros besoin d'interactivit&#233; dans vos animations, favorisez le mode de programmation s&#233;quentielle.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; Mode de programmation s&#233;quentielle&lt;/p&gt; &lt;p&gt;1. Commencez par cliquez sur une image cl&#233; ou sur les c&#244;t&#233;s de la sc&#232;ne.&lt;br /&gt; 2. Cliquez dans la fen&#234;tre Actions.&lt;br /&gt; 3. R&#233;digez votre script. &lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_47 spip_documents spip_documents_center' &gt;
&lt;img src='http://www.walldown.com/local/cache-vignettes/L412xH230/programmeras3imagecle-9ca3a.jpg' width='412' height='230' alt=&quot;&quot; style='height:230px;width:412px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Voil&#224; il ne vous reste plus qu'&#224; saisir votre premier script, mais pour commencer, aidez vous de ce tableau pour savoir ce quoi doit contenir votre script. Nous distinguons les actions qui sont ex&#233;cut&#233;es en continue et celles qui sont ex&#233;cut&#233;es une seule fois, par ailleurs, nous faisons &#233;galement la diff&#233;rence entre les actions d&#233;clench&#233;es par l'utilisateur (Manuelle) et celles qui se font automatiquement par le programme.&lt;/p&gt; &lt;table border=&quot;1&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;center&quot; align=&quot;middle&quot;&gt; &lt;/td&gt; &lt;td valign=&quot;center&quot; align=&quot;middle&quot;&gt;&lt;h4&gt; Automatique&lt;/h4&gt;&lt;/td&gt; &lt;td valign=&quot;center&quot; align=&quot;middle&quot;&gt;&lt;h4&gt;Manuelle &lt;/h4&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;h4&gt;Une&lt;br /&gt; seule fois&lt;/h4&gt;&lt;/td&gt; &lt;td&gt;
&lt;p&gt;Script plac&#233; en dehors des &#233;couteurs g&#233;rant les &#233;v&#232;nement MouseEvent et KeyboardEvent. Saisissez simplement votre ligne d'instruction sans gestionnaire d'&#233;v&#232;nement.&lt;/p&gt; &lt;p&gt;Exemple : La premi&#232;re ligne de l'exemple 1 ci-dessous.&lt;/p&gt; &lt;/td&gt; &lt;td&gt;
&lt;p&gt;Script plac&#233; dans un &#233;couteur g&#233;rant les &#233;v&#232;nement MouseEvent et/ou KeyboardEvent.&lt;/p&gt; &lt;p&gt; Exemple : Voir l'exemple 1 ci-dessous.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;h4&gt; En continue&lt;/h4&gt;&lt;/td&gt; &lt;td&gt;
&lt;p&gt;Script plac&#233; dans un &#233;couteur g&#233;rant l'&#233;v&#232;nement Event.ENTER_FRAME. Il est &#233;galement possible d'utiliser la classe Timer().&lt;/p&gt; &lt;p&gt;Exemple : Voir l'exemple 2 ci-dessous.&lt;/p&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Exemple 1 :&lt;/strong&gt; R&#233;alisez une interpolation de mouvement de l'image cl&#233; 1 &#224; l'image cl&#233; 20 (faites d&#233;filer une occurrence de la gauche vers la droite de la sc&#232;ne). Cr&#233;ez un calque suppl&#233;mentaire sur lequel vous placez un symbole de type clip. Nommez l'occurrence obtenue, ex. : boutonLancement. Placez le script ci-dessous sur l'une des deux images cl&#233; de l'image 1.&lt;/p&gt; &lt;p&gt;stop() ;&lt;br /&gt; boutonLancement.addEventListener(MouseEvent.MOUSE_DOWN,relancerTeteLecture) ;&lt;br /&gt; &lt;br /&gt; function relancerTeteLecture(evt:MouseEvent) &lt;i&gt;&lt;br /&gt; play() ;&lt;br /&gt; &lt;/i&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Exemple 2 :&lt;/strong&gt; Dans un nouveau document, placez un symbole sur la sc&#232;ne qui repr&#233;sente un rectangle. Nommez l'occurrence obtenue, ex. : planche.&lt;/p&gt; &lt;p&gt;planche.addEventListener(Event.ENTER_FRAME,tournerPlanche) ;&lt;br /&gt; &lt;br /&gt; function tournerPlanche(evt:Event) &lt;i&gt;&lt;br /&gt; planche.rotation = planche.rotation+3&lt;br /&gt; &lt;/i&gt;&lt;/p&gt; &lt;p&gt; Consultez &#224; pr&#233;sent les ressources qui traient des Ecouteurs, des Propri&#233;t&#233;s et de l'Incr&#233;mentation de la valeur d'une propri&#233;t&#233; afin de pouvoir faire vos premiers essais de programmation en AS3.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; Mode de programmation orient&#233;e objet&lt;/p&gt; &lt;p&gt;Vous connaissez d&#233;j&#224; la programmation orient&#233;e objet et vous aimeriez developper en AS3.&lt;/p&gt; &lt;p&gt;1. Cr&#233;ez une nouvelle animation que vous enregistrez au format .fla.&lt;br /&gt; 2. Dans la palette Propri&#233;t&#233;s, sp&#233;cifiez le nom de la classe du document. Ex. Main. &lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_48 spip_documents spip_documents_left' style='float:left; width:500px;' &gt;
&lt;img src='http://www.walldown.com/IMG/bmp/script.bmp' width='500' height='95' alt=&quot;&quot; style='height:95px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;3. Cr&#233;ez un document ActionScript que vous nommez bien &#233;videment Main.as.&lt;br /&gt; &lt;br /&gt; 4. Lorsque vous ex&#233;cutez le raccoruci clavier CTRL-Entr&#233;e (PC) ou Commande-Entr&#233;e (Mac), vous obtiendrez une pr&#233;visualisation, aussi bien &#224; partir du fichier .as que .fla.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Cr&#233;er un composant avec Flash MX</title>
		<link>http://www.walldown.com/Creer-un-composant-avec-Flash-MX.html</link>
		<guid isPermaLink="true">http://www.walldown.com/Creer-un-composant-avec-Flash-MX.html</guid>
		<dc:date>2004-11-11T13:49:23Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Klaude Charlier</dc:creator>



		<description>http://www.flash-france.com/section... Les composants Flash MX annoncent l'arriv&#233;e d'un nouvel outil performant pour le d&#233;veloppeur Flash, qui augmente la port&#233;e des applications des smartclips de Flash 5. Ce (long) tutoriel vous accompagnera tout au long de la cr&#233;ation de simples composants de triangles isoc&#232;les. Ce tutoriel est tir&#233; du livre Flash for Interactive Simulation&quot;, de Jonathan Kaye and David Castillo, &#224; para&#238;tre en novembre 2002. et traduit par l'&#233;quipe de Flash-France Il vous (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;&lt;a href='http://www.flash-france.com/sections.php?op=viewarticle&amp;secid=17&amp;artid=73' class='spip_out' rel='nofollow'&gt;http://www.flash-france.com/section...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Les composants Flash MX annoncent l'arriv&#233;e d'un nouvel outil performant pour le d&#233;veloppeur Flash, qui augmente la port&#233;e des applications des smartclips de Flash 5. Ce (long) tutoriel vous accompagnera tout au long de la cr&#233;ation de simples composants de triangles isoc&#232;les.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Ce tutoriel est tir&#233; du livre Flash for Interactive Simulation&quot;, de Jonathan Kaye and David Castillo, &#224; para&#238;tre en novembre 2002.
et traduit par l'&#233;quipe de Flash-France&lt;/p&gt; &lt;p&gt;Il vous montrera comment :&lt;/p&gt; &lt;p&gt;mettre en application les nouvelles instructions Action Script, comme #initclip et registerClass, cr&#233;er un composant simple avec un ic&#244;ne personnalis&#233;, aussi bien qu'&#224; utiliser de nouvelles m&#233;thodes comme &quot;addProperty&quot; pour prot&#233;ger mieux votre code et &quot;_targetInstanceName&quot;, toucher aux m&#233;canismes qui autorisent l'h&#233;ritage des composants fabriquer une interface personnalis&#233;e pour le panneau de propri&#233;t&#233;s cr&#233;er un aper&#231;u rapide du composant Bien qu'il soit possible de terminer ce tutoriel en utilisant le mode normal du panneau d'action, nous recommandons fortement d'utiliser le mode expert pour entrer les actions.&lt;/p&gt; &lt;p&gt;Qu'est-ce qu'un composant ?
Les fonctions ont des param&#232;tres qui permettent de personnaliser les actions qu'elle va ex&#233;cuter. De la m&#234;me mani&#232;re les clips peuvent &#234;tre param&#233;tr&#233;s pour personnaliser les animations, en d&#233;finissant des variables (ou des propri&#233;t&#233;s) qu'ils contiennent &#224; partir de l'ext&#233;rieur du clip avant ou pendant l'ex&#233;cution de l'animation, comme les valeurs minimales ou maximales d'un cadran. Par cons&#233;quent un clip peut-&#234;tre con&#231;u comme une animation param&#233;trable.&lt;/p&gt; &lt;p&gt;Flash 5 a introduit les SmartClips comme moyen de cr&#233;er des animations param&#233;trables. Les composants Fash MX repr&#233;sentent la g&#233;n&#233;ration suivante des smartClips. Les SmartClips permettent directement la cr&#233;ation de bouts d'animations r&#233;utilisables et qui fonctionnent de mani&#232;re efficace. Les limitations des smartClips toutefois, &#233;taient qu'ils ne permettaient pas de rentrer dans la structure orient&#233;e objet du programme ActionScript. L'am&#233;lioration principale des composants Fash MX est d'int&#233;grer le concept du smartClip dans cette structure.&lt;/p&gt; &lt;p&gt;Afin d'am&#233;liorer les capacit&#233;s des smartClips &#224; d&#233;finir une interface personnalis&#233;e (dans &quot;l'inspecteur de propri&#233;t&#233;&quot;) pour les param&#232;tres, les Composants permettent maintenant un aper&#231;u rapide, une option cr&#233;&#233;e par le d&#233;veloppeur qui permet &#224; l'utilisateur de voir dans l'environnement de travail ce &#224; quoi va ressembler le composant lorsqu'il sera actif.&lt;/p&gt; &lt;p&gt;Pour montrer comment cr&#233;er un composant personnalis&#233;, nous allons construire un composant simple de triangle isoc&#232;le qui aura les propri&#233;t&#233;s suivantes : base, hauteur, couleur, et un indicateur bool&#233;en qui autorisera ou non le remplissage. Il aura &#233;galement des m&#233;thodes permettant d'extraire ou de d&#233;finir ces propri&#233;t&#233;s aussi bien que l'aire.&lt;/p&gt; &lt;p&gt;Vue d'ensemble
Un composant commence avec un clip. Nous allons tout d'abord d&#233;finir un triangle &#224; l'int&#233;rieur de ce clip, puis &#233;crire l'ActionScript &#224; l'int&#233;rieur de ce clip pour la Classe &quot;triangle&quot;, ses propri&#233;t&#233;s et ses m&#233;thodes. Il faut alors associer le clip avec cette classe. Quand le composant est plac&#233; dans l'animation, le constructeur de la classe est appel&#233;. Le triangle est tr&#232;s simple, nous n'avons donc pas besoin d'animation visuelle complexe. Le triangle a une base, une hauteur, et une couleur (propri&#233;t&#233;) une valeur bool&#233;enne qui d&#233;finit si oui ou non la teinte est appliqu&#233;e de m&#234;me que des m&#233;thodes qui permettent de lire ou de d&#233;finir ces valeurs. Les m&#233;thodes acc&#232;dent aux propri&#233;t&#233;s pour manipuler les objets graphiques.&lt;/p&gt; &lt;p&gt;&#201;tape 1. Cr&#233;ation du MC (movie Clip) triangle
S&#233;lectionner le triangle, ouvrir le panneau &quot;Aligner&quot;, s&#233;lectionner &quot;vers la sc&#232;ne&quot; et aligner le triangle avec le centre (horizontalement) et le bas (verticalement). Nous l'alignons sur le centre de la base ainsi quand nous placerons le composant sur la sc&#232;ne, nous savons que la base restera en position quand nous modifierons la taille de la base et sa hauteur. Votre &#233;cran devrait ressembler &#224; cela :&lt;/p&gt; &lt;p&gt;Etape 2. D&#233;finition de la classe Triangle
Maintenant, nous allons cr&#233;er la classe triangle. A l'int&#233;rieur du clip, ajouter un nouveau calque et appelez le &quot;d&#233;finitions&quot;. Ouvrez le panneau d'action &#224; la premi&#232;re image cl&#233; et entrez le code suivant :&lt;/p&gt; &lt;p&gt;#initclip
function TriangleClass () &lt;i&gt; this.cobj = new Color(this) ; this.update() ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;// permettre &#224; la classe triangle d'h&#233;riter des propri&#233;t&#233;s des clips
TriangleClass.prototype = new MovieClip() ;&lt;/p&gt; &lt;p&gt;// Mettre &#224; jour le dessin du triangle pour les propri&#233;t&#233;s de taille et et les valeur de couleur.
TriangleClass.prototype.update = function () &lt;i&gt; if (this.appliquerTeinte) &lt;i&gt; this.cobj.setRGB(this.tcouleur) ; &lt;/i&gt; this._xscale = 10 * this.tbase ; this._yscale = 10 * this.thauteur ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;// Lier la classe avec le nom du param&#232;tre d'exportation du movie clip Object.registerClass(&quot;FTriangle&quot;, TriangleClass) ;
#endinitclip&lt;/p&gt; &lt;p&gt;Vous venez juste de d&#233;finir la classe du composant ! Prenons le temps de jeter un coup d'oeil aux instructions que nous venons d'utiliser pour cela.&lt;/p&gt; &lt;p&gt;#initclip Avanc&#233;&lt;/p&gt; &lt;p&gt;Quelques malicieux parmi vous pourrait se demander ce qui se produirait si vous mettiez quelque chose d'autre qu'une m&#233;thode, un constructeur, ou un registerClass dans des pragmas #initclip. La r&#233;ponse est qu'elle sera &#233;valu&#233;e au niveau _ root, et &quot; this&quot; se rapportera alors au _root.&lt;/p&gt; &lt;p&gt;Cela signifie que vous pouvez vous r&#233;f&#233;rer au composant seulement par des d&#233;finitions de m&#233;thode, ainsi vous devez &#233;viter la tentation d'utiliser un rapport comme &quot; this.myProp = 5 ; &quot; pour essayer de placer une propri&#233;t&#233; &#224; l'ext&#233;rieur du constructeur ou d'une m&#233;thode.&lt;/p&gt; &lt;p&gt;Vous devez introduire ce rapport dans le constructeur ou dans une M&#233;thode.. Cela va aussi bien pour les gestionnaires d&#233;finissants les &#233;v&#233;nement, tels que &#171; onEnterFrame &#187; ou &#171; onPress &#187;. Si vous voulez d&#233;finir ces &#233;v&#233;nements pour votre composant, ils doivent &#234;tre d&#233;finis comme cela :&lt;/p&gt; &lt;p&gt;myComponentClass.prototype.onEnterFrame = function () &lt;i&gt;...&lt;/i&gt;&lt;/p&gt; &lt;p&gt;ou bien &#224; l'int&#233;rieur du constructeur ou des m&#233;thodes :&lt;/p&gt; &lt;p&gt;function myComponentClass () &lt;i&gt; ... this.onEnterFrame = function () &lt;i&gt; ... &lt;/i&gt; ... &lt;/i&gt;&lt;/p&gt; &lt;p&gt;Quoique les approches soient fonctionnellement &#233;quivalentes, le premier est plus efficace si vous voulez qu'il s'applique &#224; la classe enti&#232;re parce qu'il d&#233;finit la m&#233;thode une fois pour la classe, tandis que le dernier d&#233;finit la m&#233;thode pour chaque instance de myComponentClass.&lt;/p&gt; &lt;p&gt;#initclip et #endinitclip
FlashMX a deux nouvelles instructions ('pragmas'),#initclip et #endinitclip qui sont utilis&#233;es pour d&#233;finir des composants. Quand vous fabriquez un composant, vous d&#233;finissez un constructeur pour la classe, definissez toutesles m&#233;thodes, et ensuite enregistrez la classe avec un clip.&lt;/p&gt; &lt;p&gt;Les r&#232;gles de compilation #initclip et #endinitclip sont utilis&#233;es pour marquer un bloc de code lors de sa d&#233;finition et de son enregistrement. Le code &#224; l'int&#233;rieur de ses &quot;pragmas&quot; est ex&#233;cut&#233; seulement une fois pendant le d&#233;roulement de l'animation et cela ind&#233;pendamment du nombre d'instance du composant utilis&#233; dans l'animation. le code &#224; l'int&#233;rieur des &quot;pragmas&quot; est utilis&#233; avant tous les codes utilis&#233;s &#224; l'int&#233;rieur du clip. Cela vous permet de vous r&#233;f&#233;rer aux m&#233;thodes de la classe imm&#233;diatement quand le clip est plac&#233;, faisant tomb&#233; une limitation de flash 5 qui n&#233;cessitait d'attendre au moins une image avant que les m&#233;thodes deviennent disponibles.&lt;/p&gt; &lt;p&gt;Note :les pragmas #initclip/#endinitclip sont r&#233;ellement uniquement utile pour d&#233;finir des composants. &#192; premi&#232;re vue, ils peuvent sembler construits comme s'ils devaient travailler pour &#233;valuer un bloc de code sur n'importe quelle ligne de temps (timeline), mais ce n'est pas ce qu'ils font.&lt;/p&gt; &lt;p&gt;Le constructeur de la classe triangle
function TriangleClass ()&lt;/p&gt; &lt;p&gt;Cela d&#233;finit le constructor du composant triangle. Quand Flash cr&#233;e le composant, il appelle le constructor et ex&#233;cute les actions. Les propri&#233;t&#233;s (tbase et thauteur) sont automatiquement d&#233;finies par d&#233;faut (nous verrons comment plus tard).&lt;/p&gt; &lt;p&gt;D&#233;finir un h&#233;ritage des propri&#233;t&#233;s et des m&#233;thodes des Clip.
TriangleClass.prototype = new MovieClip() ;&lt;/p&gt; &lt;p&gt;Quand vous publiez une instruction pour connecter la d&#233;finition de classe au clip, Flash r&#233;assigne le type clip au type de la classe que nous avons d&#233;fini. Toutefois, nous voulons toujours que le clip se comporte comme un clip, donc nous avons &#224; d&#233;finir notre nouvelle classe pour qu'elle h&#233;rite des m&#233;thodes et propri&#233;t&#233;s des clips. Par cons&#233;quent, les instructions ci-dessus autorisent l'h&#233;ritage et ainsi nous pouvons utiliser toutes les m&#233;thodes et propri&#233;t&#233;s des clips avec notre composant.&lt;/p&gt; &lt;p&gt;Il est imp&#233;ratif que ces instructions suivent imm&#233;diatement apr&#232;s le constructeur et avant toute m&#233;thode d&#233;finie pour la classe.&lt;/p&gt; &lt;p&gt;Sous-programme de mise &#224; jour du triangle.
TriangleClass.prototype.update = function ()&lt;/p&gt; &lt;p&gt;Cette m&#233;thode trace le triangle aux valeurs actuelles de base et de taille. Il contr&#244;le d'abord pour voir si nous sommes cens&#233;s appliquer la teinte au triangle, et, si oui, lui applique la teinte. La propri&#233;t&#233; &quot;applyTint &quot; est une valeur vraie ou fausse qui nous indique si oui ou non on doit appliquer la teinte. Cependant, une fois qu'une teinte a &#233;t&#233; appliqu&#233;e, elle ne peut pas &#234;tre retir&#233;e, seulement modifi&#233;e avec une autre couleur. C'est une limitation de notre strat&#233;gie de programmation, qui a &#233;t&#233; gard&#233;e aussi simple que possible pour des raisons didactiques. Dans cet exemple, nous multiplions par 10 plut&#244;t que 100 parce que nous pla&#231;ons initialement le triangle &#224; une largeur et &#224; une taille de 10.&lt;/p&gt; &lt;p&gt;Lions la classe avec le clip : Object.registerClass(&quot;FTriangle&quot;, TriangleClass) ;&lt;/p&gt; &lt;p&gt;C'est l'instruction essentielle qui joint la classe (TriangleClass) avec le movie clip identifi&#233; par l'identifiant de liaison &quot;FTriangle&quot;. Dans l'&#233;tape 6, nous nommerons ce composant avec cet identifiant de liaison.&lt;/p&gt; &lt;p&gt;Etape 3. D&#233;finition des m&#233;thodes de lecture et d'&#233;criture des propri&#233;t&#233;s de la classe Triangle
C'est le moment de d&#233;finir les autres m&#233;thodes dont nous avons besoin pour ce composant, pour les nommer : celles qui g&#232;rent la d&#233;finition et l'acc&#232;s au valeur de : base, hauteur et teinte. Nous allons aussi ajouter une m&#233;thode qui calcul l'aire d'un triangle. Pour les routines d'attributions de valeurs ( setProperty ) nous devons redessiner le triangle une fois les valeurs pass&#233;es. Pour la lecture des valeurs nous renverrons simplement la valeur voulue. Ajouter les m&#233;thodes suivantes avec le m&#234;me bloc : #initclip / #endinitclip ( o&#249; vous vouler apr&#232;s l'instruction d'h&#233;ritage de l'objet MovieClip ) :&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.setBase = function (b) &lt;i&gt; this.tbase = b ; this.update() ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.getBase = function () &lt;i&gt; return (this.tbase) ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.setHauteur = function (h) &lt;i&gt; this.thauteur = h ; this.update() ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.getHauteur = function () &lt;i&gt; return (this.thauteur) ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.setTeinte = function (c) &lt;i&gt; this.tcouleur = c ; this.update() ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.activerTeinte = function () &lt;i&gt; this.appliquerTeinte = true ; this.update() ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.getAire = function () &lt;i&gt; return (0.5 * this.tbase * this.thauteur) ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Etape 4. D&#233;finition des propri&#233;t&#233;s du composant Triangle
Il est maintenant temps de d&#233;finir les param&#232;tres du composant dans la fen&#234;tre de d&#233;finition des composants. Ouvrez la librairie et cherchez-y le Clip Composant Triangle.. Ouvrez la fen&#234;tre de d&#233;finition de Composant ( click droit sur PC , CTRL+click sous MAC ) et choisissez &quot;D&#233;finition du Composant...&quot;.&lt;/p&gt; &lt;p&gt;Dans cette fen&#234;tre vous allez entrer les param&#232;tres de votre composant. Le + et le - en haut de cet &#233;cran vous permettent d'ajouter ou d'enlever des propri&#233;t&#233;s. Par d&#233;faut, les propri&#233;t&#233;s ajout&#233;es ont la valeur &quot;defaultValue&quot; et sont de type String. Flash MX vous permet de d&#233;finir des propri&#233;t&#233;s de types : Default, Array, Object, List, String, Number, Boolean, Font Name et Color. Il y a 4 colonnes dans ce tableau : la premi&#232;re, Nom, est le texte que vous souhaitez voir dans l'inspecteur de propri&#233;t&#233; des composants. Le nom peut contenir des espaces, des charact&#232;res alpahnum&#233;rique et de la ponctuation. Il est important de d&#233;finir un titre d&#233;crivant bien le param&#232;tre dans cette colonne.&lt;/p&gt; &lt;p&gt;La deuxi&#232;me colonne, Variable, est le nom de la propri&#233;t&#233; utilis&#233;e dans le script du composant. Ce nom de variable ne peut pas avoir de ponctuations ou d'espace ( sauf des _ ). Avoir &#224; la fois un nom et une variable vous permet d'avoir : 1 nom bien descriptif pour les utilisateurs du script, et un nom court pour utiliser dans vos scripts.&lt;/p&gt; &lt;p&gt;Note : Si vous remplissez la colonne Variable mais pas la Colonne nom, Flash met le Nom de variable dans l'inspecteur de propri&#233;t&#233;. Si vous faites l'inverse vous devrez alors utiliser ce que vous avez mis dans votre colonne Nom comme nom de variable dans vos scripts.&lt;/p&gt; &lt;p&gt;La trois&#232;me colonne, Valeur, est la valeur par d&#233;faut de la propri&#233;t&#233;. La derni&#232;re colonne est le type du param&#232;tre, vous pourrez choisir cela en cliquant sur la liste d&#233;roulante :&lt;/p&gt; &lt;p&gt;Nom Variable Valeur Type Longuer de la Base tbase 10 Number Hauteur thauteur 10 Number Teinte tcouleur 0 Color Appliquer Teinte appliquerTeinte false Boolean&lt;/p&gt; &lt;p&gt;Comme nous n'avons pas encore d'Interface Utilisateur ou de Pr&#233;visualitation d&#233;finit pour le composant laisser ces 2 lignes vide. Si vous voulez tapper une description pour aider les utilisateurs &#224; comprendre la fonction de votre composant, appuyez sur le bouton D&#233;finir &#224; droite de la boite Description. Dans la fen&#234;tre Description, choisissez &quot;D&#233;cription Textuelle&quot; et entrez la description dans la zone de saisie. L'autre option est de cr&#233;er une description formatt&#233;e pour la panneau R&#233;f&#233;rence ( &quot; La description fait partie du panneau R&#233;f&#233;rence ). Pour cela, regardez la documentation Flash ou le site : Flash MX developper pour avoir des informations sur comment cr&#233;er une description de composant pr&#233;sente dans la panneau R&#233;f&#233;rence.&lt;/p&gt; &lt;p&gt;Choisissez un ic&#244;ne pour votre composant en cliquant ( et en gardant enfoncer le bouton ) sur l'icone plac&#233; en-dessous du labal Description. Dans une prochaine &#233;tape nous allons vous montrer comment d&#233;finir un ic&#244;ne personnel.&lt;/p&gt; &lt;p&gt;Sous cette zone se trouve deux options : Bloquer ou non les valeurs de param&#232;tres dans les instances ( ce qui veut dire qu'un utilisateur peut ou ne peut pas ajouter des param&#232;tres quand le composant a &#233;t&#233; plac&#233; sur la sc&#232;ne ), et Afficher ou non le composant dans le panneaux Composants. Note : Si vous cocher &quot;Afficher dans la panneau Composant&quot;, le composant ne s'ajoutera pas automatiquement dans la panneau composant. Nous verrons cela par la suite. Cliquer sur OK pour continuer.&lt;/p&gt; &lt;p&gt;Etape 5. D&#233;finir un icone personnalis&#233;
Flash MX vous permet de d&#233;finir votre propre icone pour r&#233;pr&#233;senter votre composant, et qui le repr&#233;sentera dans la librairie, l'explorateur d'animation et le panneau composant, vous pouvez aussi d&#233;finir l'ic&#244;ne par d&#233;faut...&lt;/p&gt; &lt;p&gt;Dans un programme d'&#233;dition d'image comme photoshop ou fireworks, cr&#233;&#233; une image de 24x20 ( en GIF JPEG ou PNG ) pour r&#233;pr&#233;senter votre composant. Importer le graphique dans la librairie ( Fichier &gt; Importer dans la librairie ). Flash liera alors l'ic&#244;ne avec le composant si vous donnez le m&#234;me nom &#224; votre ic&#244;ne qu'&#224; votre composant, et que vous le placez dans le dossier de la librairie appell&#233; FCustomIcons ( cr&#233;ez ce dossier dans votre librairie si vous ne l'avez pas d&#233;j&#224; ).&lt;/p&gt; &lt;p&gt;Si vous fermez et rouvrez la librairie vous verrez l'ic&#244;ne &#224; gauche du nom de votre Composant.&lt;/p&gt; &lt;p&gt;Etape 6. D&#233;finir les propri&#233;t&#233;s du Symbole
Si vous ne l'avez pas encore fait, fermez le Clip et retournez sur la sc&#232;ne principale. Le Clip restera dans votre librairie ;). Vous allez maintenant r&#233;aliser le Lien en faisant bouton droit ( win ) ou Pomme+Click ( mac ) sur le composant Triangle dans la librairie, et choisissez &quot;Propri&#233;t&#233;&quot;.&lt;/p&gt; &lt;p&gt;Si l'&#233;cran qui s'ouvre n'est compos&#233; que du haut de la capture d'&#233;cran ci-dessus alors cliquez sur le bouton &quot;Avanc&#233;&quot;. Dans l'espace marqu&#233; Identifiant ( sous Liaison ), entrez l'identifiant que nous avons d&#233;fini pour le composant triangle : FTriangle pour &quot;Flash Triangle&quot;. Cocher Exporter pour ActionScript et laissez vide les autres. Cela dit &#224; Flash d'empaqueter le composant par d&#233;faut dans tous les films utilisant le composant. Comme vous n'avez pas coch&#233; &quot;Exporter sur la premi&#232;re image&quot; Flash chargera le composant juste avant de l'utiliser. Si vous cochez Exporter sur... Flash le chargera directement sur la premi&#232;re image de l'animation. La raison pour laquelle nous ne chargeons pas cela sur la premi&#232;re frame est que cela pause des probl&#232;mes d'utilisation sur internet ( pas pratique d'attendre le chargement de tous les composants avant de voir un film Flash ). De plus, votre composant serait charg&#233; avant votre preloader ce qui n'est tout de m&#234;me pas tr&#232;s pratique ;). Les 2 autres options se r&#233;f&#232;rent &#224; la cr&#233;ation de composants pouvant &#234;tre partag&#233;s durant l'&#233;x&#233;cution. Vous pourrez en apprendre plus &#224; ce sujet en lisant la documentation Flash.&lt;/p&gt; &lt;p&gt;Etape 7. Tester le Triangle
Nous sommes maintenant pr&#234;t &#224; tester le nouveau composant. Ouvrez la librairie et placez une instance sur votre sc&#232;ne. Si vous tester le film ( Control &gt; Tester Animation ) , vous verrez un triangle avec une base et une hauteur de 10. Sortez de la fen&#234;tre de test et nous allons voir comment on peut modifier ces propri&#233;t&#233;s.&lt;/p&gt; &lt;p&gt;Vous pouvez examiner et changer les propri&#233;t&#233;s du composant en passant par la fen&#234;tre des propri&#233;t&#233;s ( comme nous l'avons fait tout &#224; l'heure ). Vous pouvez changer les valeurs en cliquant sur la colonne Valeur et en tapant la nouvelle valeur que vous voulez. Quand vous l 'aurez fait, retester l'animation et vous verrez que le triangle a bien les nouvelles propri&#233;t&#233;s.&lt;/p&gt; &lt;p&gt;Etape 8. Tester le Composant, Installer dans le panneau composant
Avant d'installer le composant, nous vous recommandons de placer le clip du composant dans un nouveau dossier de votre librairie qui aura le nom de votre composant ainsi que tous les autres &#233;l&#233;ments de biblioth&#232;que utilis&#233;s par votre composant. Cela permettra aux gens qui utiliseront votre composant d'avoir apr&#232;s l'ajout un r&#233;pertoire et un seul s'ajoutant dans leur librairie.&lt;/p&gt; &lt;p&gt;L'endroit ou votre composant sera stock&#233; d&#233;pend de votre Syst&#232;me d'exploitation. Les composants sont en effet stock&#233;s dans un dossier personnel de l'utilisateur de la machine. Voici quelques exemples : Windows 2000 et XP C:Documents and SettingsUserApplication DataMacromediaFlash MXConfigurationComponents Windows 98 et ME C:WindowsApplication DataMacromediaFlash MXConfigurationComponents Windows NT C:WinNTProfilesUserApplication DataMacromediaFlash MXConfiguration MAC OS X Hard Drive:Users:Library:Application Support:Macromedia:FlashMX:Configuration:Components Mac OS 9.x (multi-utilisateur) Hard Drive:Users:User:Documents:Macromedia :FlashMX:Configuration:Components :&lt;/p&gt; &lt;p&gt;Vous serez certainement plus &#224; l'aise en mettant votre composant dans le pannel Composant et en le glisssant simplement sur la sc&#232;ne plut&#244;t que d'utiliser une librarie. La meilleure installation consiste &#224; utiliser l'Extension Manager ( de Macromedia ), mais pour le moment tout ce dont vous avez besoin est de placer le .fla de votre composant dans le r&#233;pertoire de vos composants ( voir les exemples ci-dessus .... ), Flash installera alors votre composant automatiquement &#224; chaque d&#233;marrage.&lt;/p&gt; &lt;p&gt;Voici quelques trucs &#224; v&#233;rifier si vous ne voyez pas votre composant dans le pannel Composant ( accessible par Windows &gt; Composants ). Le pannel Composant est appell&#233; dans Flash par d&#233;faut : Flash UI Composants. A cot&#233; de ce titre il y a une liste d&#233;roulante, cliquez dessus, et regardez si le nom de fichier que vous avez sauvez apparait ici. Si oui, choisissez-le et votre composant apparaitra dans la boite. Si votre composant est dans la liste mais qu'il ne veut pas appara&#238;tre dans le pannel vous avez probablement oubli&#233; de cocher la case &quot;Afficher le composant dans le pannel&quot; dans la fen&#234;tre de d&#233;finition du composant ( Etape 4 ). Si le nom de fichier n'est pas dans la liste c'est que vous n'avez pas mis votre .fla dans le bon dossier.
Si vous avez &#224; changer le code mieux vaut enlever le fichier existant des dossiers sp&#233;ciaux et travailler sur une copie s&#233;par&#233;e avant de remettre le .fla dans le dossier des composants.&lt;/p&gt; &lt;p&gt;Etape 9. Am&#233;liorer l'impl&#233;mentation avec Object.addPropertyInsulating
Nous avons cr&#233;&#233; le composant triangle en essayant de coder proprement, nous avons d&#233;fini des m&#233;thodes setBase, getBase etc... pour acc&#233;der aux variables internes de l'objet depuis l'ext&#233;rieur. De cette fa&#231;on si nous changeons l'organisation interne du composant nous aurons &#224; changer seulement getBase et setBase et nous ne casserons pas le code de tous les gens ayant d&#233;velopp&#233; des animations avec l'ancienne version. Cependant, Flash n'as pas la possibilit&#233; de d&#233;clarer des variables publiques ( public ) et priv&#233;e ( private ) comme en C++ ou en JAVA par exemple ... Malheureusement cel&#224; veut dire que les d&#233;veloppeurs peuvent acc&#233;der et modifier des variables internes aux instances qu'ils ne sont pas cens&#233;s toucher ( principe fondamental de POO ).&lt;/p&gt; &lt;p&gt;La nouvelle m&#233;thode addProperty vous permet de d&#233;finir une propri&#233;t&#233; qui, quand on y acc&#232;de appelle une m&#233;thode pour calculer la valeur plut&#244;t que de garder une variable r&#233;elle en m&#233;moire. Par exemple, nous pouvons d&#233;finir une propri&#233;t&#233; appel&#233;e&quot;base&quot; qui utilise setBase et getBase pour g&#233;rer ses &#233;critures ( changement de valeur ) et lecture ( r&#233;cup&#233;ration de la valeur ). Quand &#224; l'ext&#233;rieur du composant on veut acc&#233;der &#224; base ou &#224; hauteur nous savons que nous pouvons utiliser les fonctions que nous avons developp&#233;es &#224; cet effet. Mais, si nous changeons l'impl&#233;mentation interne ( avec addProperty ) nous aurons seulement &#224; modifier les fonctions d'acc&#232;s et tous les codes construis avec le composant continueront de fonctionner !&lt;/p&gt; &lt;p&gt;Voici le code &#224; ajouter entre #initclip/#endinitclip (apr&#232;s getBase et setBase ) :&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.addProperty(&quot;base&quot;, TriangleClass.prototype.getBase, TriangleClass.prototype.setBase) ;&lt;/p&gt; &lt;p&gt;La m&#233;thode addPRoperty prend trois arguments : le nom ( entre &quot; &quot; ) de la nouvelle propri&#233;t&#233;, la m&#233;thode &#224; utiliser pour acc&#233;der &#224; la valeur de la propri&#233;t&#233;, la m&#233;thode pour mettre une nouvelle valeur dans la propri&#233;t&#233;. La fonction get... doit retourner la valeur, la fonction set doit accepter un argument qui est la nouvelle valeur. Les fonctions font tous les calculs n&#233;cessaires pour produire la valeur de la propri&#233;t&#233;. Par exemple la propri&#233;t&#233; &quot;Aire&quot; :&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.addProperty(&quot;aire&quot;, TriangleClass.prototype.getAire, null) ;&lt;/p&gt; &lt;p&gt;Comme vous pouvez le voir dans ce code, nous ne stoquons pas r&#233;ellement l'aire du triangle, &#224; la place nous calculons l'aire quand on veut acc&#233;der &#224; la propri&#233;t&#233; aire. Depuis l'utilisateur, cela ne change rien si la propri&#233;t&#233; aire est une vrai variable ou une valeur calcul&#233;e.&lt;/p&gt; &lt;p&gt;Pour finir, nous d&#233;finissons aussi la propri&#233;t&#233; hauteur :&lt;/p&gt; &lt;p&gt;TriangleClass.prototype.addProperty(&quot;hauteur&quot;, TriangleClass.prototype.getHauteur, TriangleClass.prototype.setHauteur) ; Supposez qu'un d&#233;velopper cr&#233;&#233; une instance de votre composant triangle appell&#233; &quot;tri0&quot;. Le d&#233;veloppeur sait maintenant que les propri&#233;t&#233;s sont aire, base, hauteur et nous n'avons plus &#224; nous soucier de probl&#232;mes caus&#233;s par des changements futurs de notre code....&lt;/p&gt; &lt;p&gt;Etape 10. Introduire par programmation un triangle dans une animation
La voie la plus directe pour instancier un composant triangle est de le faire glisser sur la sc&#232;ne &#224; partir du panneau Composant ou, si vous avez d&#233;j&#224; une instance sur la sc&#232;ne , &#224; partir de la librairie. Cependant, vous pourriez vouloir cr&#233;er dynamiquement des triangles au cours de l'animation , et vous pr&#233;f&#232;reriez ne pas avoir &#224; cr&#233;er toutes les instances possibles du d&#233;but. Ceci est facilement r&#233;alis&#233; en utilisant les m&#233;thodes soit attachMovie soit duplicateMovieClip.&lt;/p&gt; &lt;p&gt;Vous pr&#233;cisez simplement l' &quot;ID de lien &quot; (Linkage ID) et Flash prend en charge le reste , par exemple :&lt;/p&gt; &lt;p&gt;attachMovie(&quot;FTriangle&quot;, &quot;tri0&quot;, 10) ;&lt;/p&gt; &lt;p&gt;Le premier argument est l' &quot;ID de lien &quot; (Linkage ID), le second est le nom du nouveau composant sur la ligne de temps ( timeline ) courante, et le troisi&#232;me est la profondeur ( l'ordre ). Cette d&#233;claration prend le composant triangle &quot;FTriangle&quot; de la Biblioth&#232;que, nomme le clip &quot;tri0&quot;, le place sur la sc&#232;ne aux coordonn&#233;es _x = 0, _y = 0 et met sa profondeur &#224; 10 et appelle le constructeur TriangleClass. Les clips plac&#233;s sur des profondeurs de valeur plus haute apparaissent au-dessus des clips plac&#233;s sur des profondeurs inf&#233;rieures.&lt;/p&gt; &lt;p&gt;Avant que vous ne sortiez &#224; toute vitesse pour essayer cela, nous devons r&#233;soudre le probl&#232;me qui consiste &#224; obtenir les valeurs de param&#232;tre dans le composant au moment de l'appel du constructeur. Si nous avons fait quelque chose comme ceci :&lt;/p&gt; &lt;p&gt;attachMovie(&quot;FTriangle&quot;, &quot;tri0&quot;, 10) ;
tri0.tbase = 5 ;&lt;/p&gt; &lt;p&gt;Il est trop tard pour que la variable tbase soit utilis&#233;e dans le constructeur. Dans notre cas, cela ne fera pas de diff&#233;rence , mais dans la plupart des cas &#231;a va avoir un impact. Flash MX ne vous laisse pas douter. Il existe un param&#232;tre final optionnel (un Objet) &#224; attachMovie et duplicateMovieClip, que vous pouvez utiliser comme dans l'exemple suivant :&lt;/p&gt; &lt;p&gt;attachMovie(&quot;FTriangle&quot;, &quot;tri0&quot;, 10, &lt;i&gt; tbase : 5, thauteur : 10, tcouleur : 0x000000, appliquerTeinte : false) ;&lt;/p&gt; &lt;p&gt;Ce code cr&#233;e un objet ( en utilisant les &lt;i&gt;&lt;/i&gt; ) et le remplit avec tase, thauteur, tcouleur et la propri&#233;t&#233; appliquerTeinte. Flash copie toutes les propri&#233;t&#233;s provenant de cet Objet dans l'instance du composant qui est cr&#233;&#233;e, avant d'appeler le constructeur du composant. De cette fa&#231;on, les propri&#233;t&#233;s sont disponibles pour le constructeur au bon moment.&lt;/p&gt; &lt;p&gt;Termin&#233; pour le moment !
Si vous avez suivi le tutoriel jusqu'ici, vous devriez avoir un composant triangle qui marche.&lt;/p&gt; &lt;p&gt;Il y a &#233;videmment beaucoup plus de choses que vous pouvez faire avec les composants que ce que l'espace nous permet d'&#233;crire ici, y compris l'h&#233;ritage des composants (comme le composant Flash UI ), la gestion d'apparence, etc. Le meilleur moyen pour trouver plus de d&#233;tails est d'examiner le code source contenu dans les Composants UI, que vous trouverez facilement dans le secteur de stockage de donn&#233;es indiqu&#233; &#224; l'&#233;tape 8.&lt;/p&gt; &lt;p&gt;Les &#233;tapes suivantes sont :&lt;/p&gt; &lt;p&gt;La cr&#233;ation d'une interface utilisateur personalis&#233;e La cr&#233;ation d'une animation de pr&#233;visualisation temps r&#233;el Avant de commencer &#224; cr&#233;er l'interface utilisateur personnalis&#233;e et la pr&#233;visualisation temps r&#233;el, nous allons pr&#233;senter une nouvelle fonction de Flash MX , _targetInstanceName, qui permet &#224; vos composants de modifier les &#233;l&#233;ments de la sc&#232;ne sur lesquels le composant est plac&#233;. Nous allons &#233;galement voir bri&#232;vement l'h&#233;ritage de composant.&lt;/p&gt; &lt;p&gt;_targetInstanceName : Cr&#233;ation de Composants qui Changent le Comportement d'Autres &#201;l&#233;ments de la sc&#232;ne&lt;/p&gt; &lt;p&gt;Nous vous avons appris comment cr&#233;er un composant ind&#233;pendant, mais une des plus existante fonction introduite par les composants Flash MX est la possibilit&#233; de cr&#233;er un composant qui modifie le comporatement d'autres &#233;l&#233;ments de la sc&#232;ne sur lesquels ils est plac&#233;. Pour ceux d'entre vous qui sont familiers avec Director, vous les conna&#238;trez d&#233;j&#224; comme &quot;comportement&quot;.&lt;/p&gt; &lt;p&gt;Avec cette fonction, vous pouvez faire glisser le composent sur d'autres &#233;l&#233;ments de la sc&#232;ne (par exemple un Clip ou un champ de texte) et faire en sorte que le composant modifie les propri&#233;t&#233;s de ces &#233;l&#233;ments. Par exemple, le composant de barre de d&#233;filement de texte que Macromedia fourni se place et se redimensionne lui-m&#234;me sur tout champ de texte sur lequel il est plac&#233;, et fourni automatiquement les fonctionnalit&#233;s de la barre de d&#233;filement &#224; ce champ de texte. La propri&#233;t&#233; _targetInstanceName donne au composant le nom ( cha&#238;ne ) de l'&#233;l&#233;ment de la sc&#232;ne sur lequel il a &#233;t&#233; plac&#233;. Pour acc&#233;der aux propri&#233;t&#233;s et m&#233;thodes de l'objet cible, vous pouvez utiliser la syntaxe suivante &#224; partir d'une m&#233;thode d'un composant : this._parent[_targetInstanceName]. Par exemple, pour obtenir la longueur de l'object cible, vous pourriez &#233;crire :&lt;/p&gt; &lt;p&gt;this._parent.[_targetInstanceName]._width&lt;/p&gt; &lt;p&gt;Pour rendre cette propri&#233;t&#233; disponible, vous l'incluez dans la liste des param&#232;tres de votre composant (voir figure au-dessus). Vous allez &#233;galement avoir une surprise : votre composant va &quot;s'&#233;manter&quot; sur place. Quand vous glissez votre composant sur un autre &#233;l&#233;ment de la sc&#232;ne, votre composant va s'aligner tout seul sur le coin haut-gauche de l'&#233;l&#233;ment cible de la sc&#232;ne. C'est &#233;galement un moyen commode de v&#233;rifier visuellement que le composant a &#233;t&#233; connect&#233; avec l'objet cible. Alternativement, vous pouvez tapper le nom de l'objet cible dans l'inspecteur de propri&#233;t&#233;s. Si le composant n'est pas gliss&#233; sur un un &#233;l&#233;ment de la sc&#232;ne, la propri&#233;t&#233; _targetInstanceName prend la valeur par d&#233;faut que vous lui avez donn&#233; quand vous avez ajout&#233; la propri&#233;t&#233; dans la liste des propri&#233;t&#233;s du composant.&lt;/p&gt; &lt;p&gt;Installation de l'h&#233;ritage pour composant
Maintenant que vous pouvez sous-classer des Clips facilement avec des Composants et les lier &#224; des classes d&#233;finies par l'utilisateur, vous pouvez cr&#233;er des hi&#233;rarchies d'animation qui partagent des &#233;l&#233;ments fondamentaux.&lt;/p&gt; &lt;p&gt;L'id&#233;e essentielle est que vous faites votre h&#233;ritage de la classe fondamentale &#224; partir du clip, comme nous l'avons fait avec les triangles, et ensuite les sous-classe h&#233;ritent de la classe fondamentale (ou d'autres sous-classes ). Puisque vous devez d&#233;finir la classe fondamentale en premier, vous devez utiliser un num&#233;ro d'ordre dans la d&#233;finition de la classe fondamentale :&lt;/p&gt; &lt;p&gt;#initclip 0&lt;/p&gt; &lt;p&gt;Dans votre sous-classe, vous utilisez des num&#233;ros d'ordre plus grand que ceux de la classe parent, comme #initclip 1.Cela assure que la classe d'&#233;l&#233;ment fondamentale est d&#233;finie avant la sous-classe. Pour &#233;tablir l'h&#233;ritage, en place d'h&#233;ritage de Clip, vous pouvez utiliser une d&#233;claration comme :&lt;/p&gt; &lt;p&gt;MySubClass.prototype = new FoundationClass() ;&lt;/p&gt; &lt;p&gt;Maintenant votre sous-classe (MySubClass) aura les propri&#233;t&#233;s et les m&#233;thodes de la fondamentale (FoundationClass).&lt;/p&gt; &lt;p&gt;Les composants d'interface utilisateur de Macromedia, qui incluent les &#233;l&#233;ments comme la liste d&#233;roulante, les menu d&#233;roulants, la case &#224; cocher, et bien d'autres, sont de bons exemples d'utilisation de la hi&#233;rarchie des composants. Chaque &#233;l&#233;ment a des propri&#233;t&#233;s et m&#233;thodes uniques pour impl&#233;menter des comportement particuliers, mais ils partagent tous des styles fondamentaux de propri&#233;t&#233;s et m&#233;thodes comme l'&#233;tat activ&#233;/d&#233;sactiv&#233;, les tailles et fonts. Les designers peuvent modifier la feuille de style globale (GlobalStyleFormat) et tous les composants qu'ils dessinent &#224; partir des &#233;l&#233;ments globaux vont changer. Vous pouvez aussi cr&#233;er votre propre composant en h&#233;ritant de n'importe laquelle de ces classes.&lt;/p&gt; &lt;p&gt;Quand vous cr&#233;ez le Clip pour la sous-classe, vous pouvez aussi placer le composant parent avec le clip ou introduire le composant parent par programmation avec attachMovie ou duplicateMovieClip.&lt;/p&gt; &lt;p&gt;Etape 11. Cr&#233;ation de l'interface utilisateur (IU) personnalis&#233;e pour un composant Flash MX
Jusqu'ici, nous avons vu comment cr&#233;er un composant Flash MX personnalis&#233; pou un triangle isoc&#232;le. Dans ce tutoriel, nous allons &#233;tendre la discussion pour montrer comment cr&#233;er une interface utilisateur personnalis&#233;e.&lt;/p&gt; &lt;p&gt;Une interface utilisateur personnalis&#233;e est une animation Flash sp&#233;ciale que vous feriez pour permettre aux utilisateurs de votre composant d'entrer les valeurs des propri&#233;t&#233;s par un moyen plus commode que le panneau de propri&#233;t&#233;s de composant par d&#233;faut, comme illustr&#233; ci-dessous :&lt;/p&gt; &lt;p&gt;Motivation
Travaillant sur les obstacles majeurs que pourraient r&#233;pr&#233;senter la cr&#233;ation de composants, vous vous r&#233;chauferez dans le rougeoiement des visages excit&#233;s de vos designers et d&#233;veloppeurs d&#233;sirant exploiter la magie de votre composant triangle. Un groupe dont les visages ne seront bizarrement pas rougeoyant est celui des agents d''Assurance Qualit&#233;&quot; qui diront que maintenant que vous avez cr&#233;&#233; si facilement vos triangles isoc&#232;les pour des animation Flash les gens vont les utiliser incorrectement. En fait , ils vous diront que si la base et la hauteur sont en-dehors d'une certaine proportion, le triangle n'est plus facile &#224; utiliser.&lt;/p&gt; &lt;p&gt;Le chef de l'Assurance qualit&#233; vous dira que vous devez ajouter un syst&#232;me de mesure &quot;facile &#224; utiliser&quot; dans le composant pour pr&#233;venir les d&#233;veloppeurs quand les triangles deviennent dangeureusement &quot;hors-normes&quot;. Pour vous aider, elle vous donne le quotient norme-utilisateur pour les triangles isoc&#232;les :&lt;/p&gt; &lt;p&gt;fuqu = (base * 4.211) / height&lt;/p&gt; &lt;p&gt;La valeur id&#233;ale de fuqu est 4.211, et plus elle s'&#233;loigne (&#224; la fois plus grande ou plus petite ) de cette valeur, plus le triangle devient hors-normes. La cr&#233;ation de triangles avec une valeur de fuqu en-dessous de 2.211 ou au-dessus de 6.211 serait m&#234;me une raison de licensiement de votre soci&#233;t&#233;.&lt;/p&gt; &lt;p&gt;Votre c&#244;t&#233; altruiste vous dicte que vous devez alerter les utilisateurs de votre compoosant avant qu'ils ne fassent une erreur fatale. Vous allez cr&#233;er une interface utilisateur personnalis&#233;e (IU) pour le composant triangle qui va avertir l'utilisateur si le triangle viole la politique d'entreprise, bas&#233; sur la base et la hauteur qu'ils tappent. Ca n'aidera pas les programmeurs qui vont coder le composant dynamiquement, mais ils sont d&#233;j&#224; au-del&#224; de cet espoir.&lt;/p&gt; &lt;p&gt;Cr&#233;ation de l'interface utilisateur (IU) personnalis&#233;e Pour cr&#233;er l'IU personnalis&#233;e , vous cr&#233;ez une nouvelle animation Flash. La nouvelle animation Flash va d&#233;marer avec l'inspecteur de propri&#233;t&#233;s r&#233;gulier (les dimensions sont environ 406 x 72 pixels) ou dans le panneau de propri&#233;t&#233;s de composant ( utilisant si vous avez besoin un espace plus grand que ce qui irait dans l'inspecteur de propri&#233;t&#233;).&lt;/p&gt; &lt;p&gt;Vous allez devoir cr&#233;er un moyen dans cette animation de retrouver les valeurs des propri&#233;t&#233;s du composant que va d&#233;finir l'utilisateur , &#224; savoir tbase, thauteur, tcouleur, et appliquerTeinte. Pour cr&#233;ez l'index de fuqu, vous allez ajouter un indicateur de sa valeur, avec un avertissement quand elle s'&#233;loigne des param&#232;tres id&#233;aux, et une alerte quand elle s'&#233;loigne grossi&#232;rement de ceux-ci.&lt;/p&gt; &lt;p&gt;L'&#233;l&#233;ment cl&#233; dont vous avez besoin pour votre interface utilisateur personnalis&#233;e (IU) est une instance de clip que vous cr&#233;ez appel&#233; &quot;xch&quot;. Vous passez les valeurs &#224; votre composant en &#233;crivant les valeurs des propri&#233;t&#233;s de xch par l'IU personnalis&#233;e, comme xch.tabse = 20 ;&lt;/p&gt; &lt;p&gt;L'IU personnalis&#233;e autorisera les utilisateurs &#224; entrer de nouvelles valeurs. Dans notre cas, l'interface va &#233;galement motrer les avertissements sur la valeur de fuqu, lorsque n&#233;cessaire. Quand l'animation avec le composant triangle est test&#233;e ou publi&#233;e, Flash copie les propri&#233;t&#233;s et valeurs sur xch vers le composant qui est donc pr&#233;s &#224; s'initialiser lui-m&#234;me avec les valeurs que l'utilisateur a entr&#233;.&lt;/p&gt; &lt;p&gt;Notez les &#233;tapes suivantes pour cr&#233;er une IU personnalis&#233;e :&lt;/p&gt; &lt;p&gt;1. Cr&#233;er une nouvelle animation et changez ses dimensions pour avoir 406 x 72.&lt;/p&gt; &lt;p&gt;2. Cr&#233;ez un clip vide en utilisant Ins&#233;rer &gt; Nouveau symbole et appelez-le &quot;exchange&quot;. Faites-le glisser sur la sc&#232;ne et donnez-lui le nom d'instance &quot;xch&quot;.&lt;/p&gt; &lt;p&gt;3. Cr&#233;ez des textes statiques pour &quot;base&quot;,&quot;hauteur&quot;,&quot;rouge&quot;,&quot;vert&quot;,&quot;bleu&quot;,&quot;fuqu =&quot;,&quot;rapport&quot; et &quot;0-255&quot;, et placez-les comme dans l'illustration.&lt;/p&gt; &lt;p&gt;4. Maintenant, d&#233;finissez les champ de texte que vous utilisez pour r&#233;cup&#233;rer les valeurs des propri&#233;t&#233;s tbase et hauteur. Cr&#233;ez un champ de texte &quot;base&quot; et un champ &quot;hauteur&quot; (type : texte de saisie), placez-les au-dessus des textes statiques correspondants, et donnez-leur les noms d'instance &quot;bs&quot; et &quot;ht&quot; , respectivement.&lt;/p&gt; &lt;p&gt;5. Ensuite, d&#233;finissez les textes de saisie que nous utilisons pour r&#233;cup&#233;rer les couleurs de teinte. Cr&#233;ez 3 champs de saisie suppl&#233;mentaires nomm&#233;s &quot;rc&quot;,&quot;gc&quot; et &quot;bc&quot; (pour la couleur rouge, la couleur verte, et la couleur bleu), et placez-les au-dessus des textes statiques correspondants. L'utilisateur va entrer un entier entre 0 et 255 pour repr&#233;senter le taux d'une couleur particuli&#232;re. Les nombres en-dessous de 0 seront d&#233;finis &#224; 0 et les nombres au-dessus de 255 seront d&#233;finis &#224; 255.&lt;/p&gt; &lt;p&gt;6. Donc pour que l'utilisateur puissent pr&#233;visualiser la couleur, nous fesons un cadre qui montre le param&#233;trage actuel de la teinte. Utilisez l'outil de dessin pour cr&#233;er un carr&#233;. Convertissez ce carr&#233; en Clip, et nommez l'instance &quot;tintSq&quot;.&lt;/p&gt; &lt;p&gt;7. Nous pouvons utiliser un composant pr&#233;-d&#233;fini de Flash, FCheckBox, pour d&#233;finir lorsque l'utilisateur veut appliquer la couleur de teinte. Ouvrez le panneau de Composants et faites glisser une case &#224; cocher &#224; sa place sur la sc&#232;ne. Dans la fen&#234;tre de propri&#233;t&#233;s, d&#233;finissez le texte par &quot;appliquez teinte ?&quot; et sa valeur par d&#233;faut sur &quot;false&quot;. Sous la propri&#233;t&#233; &quot;Change Handler&quot;, entrez &quot;tintApply&quot;.&lt;/p&gt; &lt;p&gt;8. Maintenant nous cr&#233;ons l'indicateur pour aider l'utilisateur &#224; faire des triangles &quot;dans les normes&quot;. Pour tenir inform&#233; l'utilisateur de la valeur de fuqu pour le nouveau triangle, cr&#233;ez un champ de texte dynamique, nommez-le &quot;fuquTF&quot;, et placez-le en longueur sur le c&#244;t&#233; du texte statique &quot;fuqu = &quot;.&lt;/p&gt; &lt;p&gt;9. Ensuite, cr&#233;ez l'indicateur du rapport fuqu, qui dit &#224; l'utilisateur si la valeur de fuqu est PARFAITE (4.211), ACCEPTABLE (entre 2.211 et 6.211, mais pas 4.211), MAUVAISE. Cr&#233;ez un nouveau clip appel&#233; &quot; fuqu text&quot; avec 3 images cl&#233;s. Sur l'image 1, placez un texte Statique &quot;PARFAIT&quot;,&#224; l'image 2 placez le texte statique &quot;ACCEPTABLE&quot;, et &#224; la l'image 3, placez-le texte statique &quot;MAUVAIS !&quot;. Assurez-vous que ces textes soient align&#233;s sur la gauche en respectant le placement des uns par rapport aux autres. A l'image 1 d'un nouveau calque (avec le nom &quot;actions&quot;) ouvrez l'&#233;diteur d'Actions pour l'image cl&#233; et entrez l'instruction &quot;stop ;&quot;. Pour finir, fermer le Clip et nommez l'instance &quot;fuquEval&quot;.&lt;/p&gt; &lt;p&gt;Pr&#234;t ou non , ici nous codons
10. La derni&#232;re &#233;tape est d'&#233;crire le code pour l'IU personnalis&#233;e. Sur un nouveau calque, entrez le code suivat sur l'image 1 :&lt;/p&gt; &lt;p&gt;fscommand(&quot;allowscale&quot;, &quot;false&quot;) ;
// d&#233;finition des valeurs par defaut des propri&#233;t&#233;s
xch.tbase = 10 ;
xch.thauteur = 10 ;
xch.tcouleur = 0x000000 ;
xch.appliquerTeinte = false ;
// Initialise les champs de texte base et height
bs.text = 10 ;
ht.text = 10 ;
compute_fuqu(10, 10) ;
// Initialise le cadre de teinte et les champs de texte de couleur
tsc = new Color(tintSq) ;
rc.text = gc.text = bc.text = &quot;0&quot; ;
setTintSq(0, 0, 0) ;&lt;/p&gt; &lt;p&gt;// Etant donn&#233; une valeur de base et de hauteur, calcule la valeur de fuqu et d&#233;fini
// l'indicateur de fuqu bas&#233; sur la valeur calcul&#233;e
function compute_fuqu (b, h) &lt;i&gt; var fuqu ;&lt;/p&gt; &lt;p&gt; if (isNaN(b)) b = 0 ; if (isNaN(h)) h = 0 ;&lt;/p&gt; &lt;p&gt; fuqu = b/h * 4.211 ;&lt;/p&gt; &lt;p&gt; if (fuqu == 4.211) &lt;i&gt; fuquEval.gotoAndStop(1) ; &lt;/i&gt; else if (fuqu &gt;= 2.211 &amp;&amp; fuqu &lt;= 6.211) &lt;i&gt; fuquEval.gotoAndStop(2) ; &lt;/i&gt; else &lt;i&gt; fuquEval.gotoAndStop(3) ; &lt;/i&gt; // D&#233;fini le champ de texte qui montre la valeur de fuqu fuquTF.text = Math.round(fuqu * 1000) / 1000 ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;// Etant donn&#233; une valeur pour les couleurs rouge, vert et bleu, cr&#233;e une valeur compos&#233;e,
// d&#233;fini la teinte du cadre, et retourne la valeur de la couleur compos&#233;e.
function setTintSq(r, g, b) &lt;i&gt; var col = r &lt;&lt; 16 | g &lt;&lt; 8 | b ; tsc.setRGB(col) ; return col ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;//Quand les champ de texte base et height changent, calcule &#224; nouveau fuqu
// et d&#233;fini la propri&#233;t&#233; appropri&#233;e dans xch
bs.onChanged = function () &lt;i&gt; xch.tbase = this.text ; compute_fuqu(ParseFloat(this.text), ParseFloat(xch.thauteur)) ;
&lt;/i&gt;
ht.onChanged = function () &lt;i&gt; xch.thauteur = this.text ; compute_fuqu(ParseFloat(xch.tbase), ParseFloat(this.text)) ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;// Etant donn&#233; un entier c, borne-le entre 0 et 255 function boundColor (c) &lt;i&gt; if (isNaN(c)) return 0 ; if (c &lt; 0) &lt;i&gt; c = 0 ; &lt;/i&gt; else if (c &gt; 255) &lt;i&gt; c = 255 ; &lt;/i&gt; return c ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;// Quand le champ de texte de couleur change, change la couleur de teinte
// et d&#233;fini la propri&#233;t&#233; appropri&#233;e dans xch
rc.onChanged = function () &lt;i&gt; xch.tcouleur = setTintSq(boundColor(this.text), ParseInt(gc.text), ParseInt(bc.text)) ;
&lt;/i&gt;
gc.onChanged = function () &lt;i&gt; xch.tcouleur = setTintSq(ParseInt(rc.text), boundColor(this.text), ParseInt(bc.text)) ;
&lt;/i&gt;
bc.onChanged = function () &lt;i&gt; xch.tcouleur = setTintSq(ParseInt(rc.text), ParseInt(bc.text), boundColor(this.text)) ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;// La case &#224; cocher (c) app&#232;le la fonction quand l'utilisateur coche ou d&#233;coche
// la case. D&#233;fini la propri&#233;t&#233; appliquerTeinte de xch convenablement.
function tintApply (c) &lt;i&gt; xch.appliquerTeinte = c.getValue() ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;A peu pr&#232;s termin&#233; !
11. Enregistrez l'animation sur votre disque dur , ensuite testez-la (Contr&#244;le &gt; tester l'animation). Ceci va cr&#233;er le swf au m&#234;me emplacement que votre fichier sauvegard&#233;.&lt;/p&gt; &lt;p&gt;12. La derni&#232;re &#233;tapes consiste &#224; int&#233;grer l'IU personnalis&#233;e avec l'animation du triangle. Revenez &#224; votre animation du triangle, ouvrez la librairie, et s&#233;lectionnez le Composant Triangle. Ouvrez la fen&#234;tre de d&#233;finition du composant, et sur la droite de l&quot;IU personnalis&#233;e&quot;, pressez le bouton &quot;D&#233;finir&quot;.&lt;/p&gt; &lt;p&gt;13. A c&#244;t&#233; de &quot;Type&quot; , s&#233;lectionnez &quot;IU personnalis&#233;e avec un fichier swf inclut dans le fichier fla&quot;. L'autre option &quot;IU personnalis&#233;e avec un fichier swf externe&quot; vous permet de garder l'IU en dehors du triangle, ce qui est bon pour tester plut&#244;t que pour le d&#233;ployement. Avec ce param&#232;tre, vous devez non seulement donner un chemin absolu vers le fichier, ce qui signifie que le composant sur une autre plate-forme devra ajuster ceci, mais &#233;galement vous devez fournir les 2 fichiers.&lt;/p&gt; &lt;p&gt;14. Ensuite pour afficher, s&#233;lectionnez &quot;Afficher dans l'inspecteur de propri&#233;t&#233;.&quot;&lt;/p&gt; &lt;p&gt;15. Sous &quot;IU personnalis&#233;e fichier .swf &quot;, pressez Parcourir pour localiser le fichier swf, ou Mise A Jour si vous avez d&#233;j&#224; fait &#231;a et que vous voulez recharger votre IU personnalis&#233;e.&lt;/p&gt; &lt;p&gt;16. Pour finir , pressez OK et quand vous s&#233;lectionnez le triangle sur la sc&#232;ne et que la fen&#234;tre de propri&#233;t&#233;s est ouverte, vous allez voir votre IU personnalis&#233;e.&lt;/p&gt; &lt;p&gt;Fa&#238;tes attention &#224; &#231;a ! Quand vous &#233;ditez les propri&#233;t&#233;s d'un composant, vous devez voir l'IU personnalis&#233;e appara&#238;tre et marcher.&lt;/p&gt; &lt;p&gt;La derni&#232;re &#233;tape consiste &#224; cr&#233;er une pr&#233;visualisation temps r&#233;el pour le triangle.&lt;/p&gt; &lt;p&gt;Etape 12. Cr&#233;er une pr&#233;visualisation temps r&#233;el pour un composant Flash MX Dans la derni&#232;re &#233;tape, nous allons expliquer comment cr&#233;er une pr&#233;visualisatiuon temps r&#233;el, laquelle permet &#224; l'utilisateur du composant de voir dans l'environnement de cr&#233;ation &#224; quoi va ressembler le composant lorsque l'animation est publi&#233;e. Tandis que le designer change des param&#232;tres, ces changements sont transmis &#224; un swf personnalis&#233; ex&#233;cut&#233; dans l'environnement de cr&#233;ation, et nous faisons ressembler le swf au composant et ob&#233;ir &#224; la d&#233;finition des param&#232;tres.&lt;/p&gt; &lt;p&gt;C'est une excellente fonctionnalit&#233; qui va rendre plus facile le placement des composants et la cr&#233;ation des animations.&lt;/p&gt; &lt;p&gt;Motivation
Il serait plus pratique que les utilisateurs puissent voir approximativement &#224; quoi le triangle ressemblerait sur la sc&#232;ne pendant qu'ils d&#233;finissent les propri&#233;t&#233;s du triangle. Cela les aidera &#224; concevoir plus efficacement parce qu'ils ne gaspilleront plus de temps dans un cycle d'ajustement des valeurs, de test de l'animation, ajustement des valeurs , test de l'animation , etc.&lt;/p&gt; &lt;p&gt;Flash MX poss&#232;de la particularit&#233; de pr&#233;visualisation temps r&#233;el, qui fait exactement cela. Essentiellement, vous cr&#233;ez un swf s&#233;par&#233; (comme l'interface utilisateur - IU ou UI en anglais - personnalis&#233;e), et vous d&#238;tes &#224; Flash de l'utiliser pour afficher votre composant quand il est plac&#233; sur la sc&#232;ne (pendant la cr&#233;ation). Vous feriez typiquement appara&#238;tre le swf exactement comme le composant, en fonction des valeurs des propri&#233;t&#233;s.&lt;/p&gt; &lt;p&gt;Le triangle sur la sc&#232;ne est une pr&#233;visualisation temps r&#233;el que nous avons faite.&lt;/p&gt; &lt;p&gt;Vue d'ensemble
Avec l'interface utilisateur personnalis&#233;, vous pouvez d&#233;finir les valeurs &#224; l'int&#233;rieur de l'objet xch pour les transf&#233;rer au composant. Avec la pr&#233;visualisation, vous lisez les valeurs depuis l'objet xch. Contrairement &#224; une interface personnalis&#233;e, vous n'avez pas &#224; cr&#233;er d'objet xch pour r&#233;aliser une pr&#233;visualisation. Toutes les fois que l'utilisateur a modifi&#233; une propri&#233;t&#233; du composant, Flash appelle une fonction que vous d&#233;finissez dans la pr&#233;visualisation appel&#233;e &quot; onUpdate &quot;. De cette fa&#231;on vous savez quand il est n&#233;cessaire de mettre &#224; jour la pr&#233;visualisation que vous affichez. Le film de pr&#233;visualisation est con&#231;u pour visionner pr&#233;alablement des caract&#233;ristiques de base du composant, telles que la couleur et la taille, plut&#244;t que de visionner l'animation pr&#233;alablement, puisque le film fonctionne seulement &#224; une (1) image par seconde. Ceci est con&#231;u pour ne pas ralentir l'&#233;x&#233;cution de FlashMX.&lt;/p&gt; &lt;p&gt;Donc, nous ne pouvons pas employer le m&#234;me code pour la teinte que nous avons fait pour le composant r&#233;el. A la place nous fesons deux triangles, un pour la vue non teint&#233;e et un pour la vue teint&#233;e. Quand les designers veulent voir la teinte, nous appliquons la teinte, montrons le triangle teint&#233; et cachons le triangle non-teint&#233;. Faisons maintenant un film de pr&#233;visualisation pour le composant Triangle. Avant que nous commencions, cependant, nous devons consid&#233;rer en quoi la pr&#233;visualisation sera diff&#233;rente du composant r&#233;el. Dans la plupart des cas, ils ne seront pas diff&#233;rents, et il est parfaitement acceptable d'utiliser et de contr&#244;ler une instance de votre composant dans un film de pr&#233;visualisation. Dans notre situation, quand nous utilisons le vrai composant, l'activation de la teinte ne peut pas &#234;tre annul&#233; par la suite. Dans la phase de conception, cependant, nous pouvons avoir besoin de voir &#224; quoi le triangle quand il est teint&#233; et quand il n'est pas teint&#233;. Par cons&#233;quent, nous ne pouvons pas utiliser le code de teinte que nous avons fait pour le vrai composant. Au lieu de cela, nous faisons deux triangles, un pour voir le triangle non-teint&#233; et un pour voir le triangle teint&#233;. Quand l'utilisateur veut voir le triangle teint&#233;, nous affichons le triangle teint&#233;, et cachons le triangle non-teint&#233;. Et inversement.&lt;/p&gt; &lt;p&gt;Le processus
Suivre les &#233;tapes suivantes pour cr&#233;er le film.&lt;/p&gt; &lt;p&gt;1 - Cr&#233;ez une nouvelle animation (fichier). Ajuster les dimensions de cette animation de fa&#231;on &#224; ce qu'elle soit identique &#224; celle du composant &quot; TRIANGLE &quot; &#224; savoir contenu dans un carr&#233; de 10 pixels de c&#244;t&#233;.&lt;/p&gt; &lt;p&gt;2 - Renommez le calque en &quot; TRIANGLE PLEIN &quot; et dessinez sur ce calque un triangle ayant un aspect identique au composant &quot; TRIANGLE &quot; ( &#224; savoir align&#233; sur le bas du calque et de dimensions 10 pixels de base et 10 pixels de hauteur). Transformez alors ce dessin en clip, en lui donnant comme nom &quot; TRIANGLE GRAPHIQUE &quot; et donnez comme nom &#224; son occurrence &quot; tc &quot;. Ce triangle va nous servir de triangle non-teint&#233;.&lt;/p&gt; &lt;p&gt;3 - Cr&#233;ez un 2&#232;me calque au dessus du calque &quot; TRIANGLE PLEIN &quot; et nommez le &quot; TRIANGLE TEINTE &quot;, puis copiez &quot; tc &quot; sur ce calque et enfin changez le nom d'occurrence de &quot; tc &quot; en &quot; tctint &quot;.&lt;/p&gt; &lt;p&gt;Cr&#233;ez un 3&#232;me calque et renommez-le &quot; ACTIONS &quot;. Nous y placerons notre fonction de mise &#224; jour &quot; update &quot; qui va lire les propri&#233;t&#233;s du triangle et le d&#233;former et g&#233;rer l'effet de teinte. Placez pour cela le code suivant dans l'image 1 du calque :&lt;/p&gt; &lt;p&gt;// // Routine appel&#233;e lorsque les propri&#233;t&#233;s du composant changent
// Le triangle est redessin&#233; sur la base des nouvelles valeurs. Si la teinte s/b est appliqu&#233;e
// choix du triangle tctint sinon choix de tc.
function onUpdate()&lt;i&gt; var ac = _root.xch.appliquerTeinte, b = _root.xch.tbase, h = _root.xch.thauteur ;&lt;/p&gt; &lt;p&gt; tc._xscale = 10 * b ; tc._yscale = 10 * h ; tctint._xscale = tc._xscale ; tctint._yscale = tc._yscale ;&lt;/p&gt; &lt;p&gt; if (ac) &lt;i&gt; tc_color.setRGB(_root.xch.tcouleur) ; &lt;/i&gt;&lt;/p&gt; &lt;p&gt; tctint._visible = ac ; tc._visible = !ac ;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;// Nous conservons 2 copies du triangle, tc, pour la visualization de triangle non teint&#233;,
// et tctint, pour visualisation du triangle teint&#233;. Par d&#233;faut le triangle teint&#233; est cach&#233;.
tctint._visible = false ;
// Appliquons la couleur.
tc_color = new Color(tctint) ;&lt;/p&gt; &lt;p&gt;5 - Arriv&#233; &#224; ce point il serait bon de v&#233;rifier que l'option Visualisation est bien activ&#233;e. Cliquez sur le menu &quot; Contr&#244;le &quot; et cochez l'option &quot; visualisation &quot; en bas du menu si celle-ci ne l'&#233;tait pas .&lt;/p&gt; &lt;p&gt;6 - Enregistrez votre animation et testez-la (Contr&#244;le + Test de l'animation). Ceci va avoir pour effet de cr&#233;er un fichier swf que vous pourrez utiliser pour votre composant TRIANGLE.&lt;/p&gt; &lt;p&gt;7 - Il nous faut maintenant &#233;tablir la liaison entre le composant TRIANGLE et l'animation visualis&#233;e. Ouvrez l'animation dans laquelle vous avez d&#233;fini votre composant TRIANGLE, et ouvrez sa librairie (CTRL-L). S&#233;lectionnez votre composant TRIANGLE, et choisissez Param&#232;tres en cliquant sur le bouton droit de la souris (Windows) ou bien CTRL-CLICK sur MAC.&lt;/p&gt; &lt;p&gt;8 - Trouvez la ligne ou il est &#233;crit &quot; VISUALISATION en TEMPS REEL &quot; et cochez la case situ&#233;e &#224; droite. S&#233;lectionnez la ligne &quot; animation en temps r&#233;el avec swf int&#233;gr&#233;e au fichier &quot;. Cette op&#233;ration va &#233;tablir le lien entre animation en temps r&#233;el et le composant de d&#233;finition .fla. Vous pouvez cependant choisir de ne pas int&#233;grer le swf &#224; l' animation en temps r&#233;el. Ceci entra&#238;ne qu'il vous faudra repr&#233;ciser le chemin absolue du fichier et donc r&#233;ajuster ce chemin si vous utilisez des plate formes diff&#233;rentes sans compter qu'il faudra &#233;galement distribuer les 2 fichiers.&lt;/p&gt; &lt;p&gt;9 - Cliquez sur OK dans la fen&#234;tre de d&#233;finition de composant. C'est termin&#233;, tout est pr&#234;t, vous pouvez maintenant contempler votre animation avec son composant.&lt;/p&gt; &lt;p&gt;La fin... Ou un commencement ?
Les composants sont une des nouveaut&#233;s les plus int&#233;ressantes de FLASH MX. Nous esp&#233;rons que ces quelques lignes vous aurons ouvert l'app&#233;tit et vous permettrons de cr&#233;er les composants de vos r&#234;ves. Bonne chance dans vos travaux.&lt;/p&gt; &lt;p&gt;Jonathan and David&lt;/p&gt; &lt;p&gt;Vous pouvez t&#233;l&#233;charger les sources en cliquant ici.&lt;/p&gt; &lt;p&gt;Traduction Fran&#231;aise : &#233;quipe Flash-France.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les messages d'erreurs FLASH expliqu&#233;s</title>
		<link>http://www.walldown.com/Les-messages-d-erreurs-FLASH.html</link>
		<guid isPermaLink="true">http://www.walldown.com/Les-messages-d-erreurs-FLASH.html</guid>
		<dc:date>2003-04-01T11:53:28Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Klaude Charlier</dc:creator>



		<description>Message d'erreur Description La propri&#233;t&#233; &lt;propri&#233;t&#233;&gt; n'existe pas Une propri&#233;t&#233; inexistante a &#233;t&#233; rencontr&#233;e. Par exemple, x = _green n'est pas valide, car la propri&#233;t&#233; _green n'existe pas. L'op&#233;rateur &lt;op&#233;rateur&gt; doit &#234;tre suivi par un op&#233;rande Un op&#233;rateur sans op&#233;rande a &#233;t&#233; rencontr&#233;. Par exemple, x = 1 + requiert un op&#233;rande apr&#232;s l'op&#233;rateur +. Erreur de syntaxe Ce message est &#233;mis &#224; chaque fois que le syst&#232;me d&#233;tecte une erreur de syntaxe non sp&#233;cifique. Un nom de champ est attendu (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;table width=&quot;97%&quot; border=&quot;1&quot; cellpadding=&quot;6&quot; cellspacing=&quot;0&quot;&gt;&lt;tr valign=top&gt;&lt;th align=&quot;left&quot;&gt;
&lt;p&gt;&lt;b&gt;Message d'erreur&lt;/b&gt;&lt;/p&gt; &lt;/th&gt;&lt;th align=&quot;left&quot;&gt;
&lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt; &lt;/th&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;La propri&#233;t&#233; &lt;propri&#233;t&#233;&gt; n'existe pas&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Une propri&#233;t&#233; inexistante a &#233;t&#233; rencontr&#233;e. Par exemple, &lt;code class='spip_code' dir='ltr'&gt;x = _green&lt;/code&gt; n'est pas valide, car la propri&#233;t&#233; &lt;code class='spip_code' dir='ltr'&gt;_green&lt;/code&gt; n'existe pas.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;L'op&#233;rateur &lt;op&#233;rateur&gt; doit &#234;tre suivi par un op&#233;rande&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un op&#233;rateur sans op&#233;rande a &#233;t&#233; rencontr&#233;. Par exemple, &lt;code class='spip_code' dir='ltr'&gt;x = 1 +&lt;/code&gt; requiert un op&#233;rande apr&#232;s l'op&#233;rateur &lt;code class='spip_code' dir='ltr'&gt;+&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Erreur de syntaxe&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Ce message est &#233;mis &#224; chaque fois que le syst&#232;me d&#233;tecte une erreur de syntaxe non sp&#233;cifique.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Un nom de champ est attendu apr&#232;s l'op&#233;rateur '.'.&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Vous devez sp&#233;cifier un nom de champ valide avec la syntaxe &lt;code class='spip_code' dir='ltr'&gt;objet.champ&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;&lt;symbole&gt; attendu&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un symbole non valide ou inattendu a &#233;t&#233; rencontr&#233;. Par exemple, dans la syntaxe ci-dessous, le symbole &lt;code class='spip_code' dir='ltr'&gt;truc&lt;/code&gt; n'est pas valide. Le symbole attendu est &lt;code class='spip_code' dir='ltr'&gt;while&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;&lt;code class='spip_code' dir='ltr'&gt;do {&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;code class='spip_code' dir='ltr'&gt; trace (i)&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;code class='spip_code' dir='ltr'&gt; } truc (i &lt; 100)&lt;/code&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;La liste d'initialisateur doit &#234;tre termin&#233;e par &lt;terminaison&gt;&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Le crochet ou l'accolade de fermeture n'appara&#238;t pas dans une liste d'initialiseurs d'objet ou de tableau.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Identifiant attendu&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un symbole inattendu a &#233;t&#233; rencontr&#233; &#224; la place d'un identificateur. Dans l'exemple ci-dessous, 3 n'est pas un identificateur valide.&lt;/p&gt; &lt;p&gt;&lt;code class='spip_code' dir='ltr'&gt;var 3 = 4;&lt;/code&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;L'&#233;l&#233;ment JavaScript '&lt;construction&gt;' n'est pas accept&#233;&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Une construction JavaScript non support&#233;e par ActionScript a &#233;t&#233; rencontr&#233;e. Ce message appara&#238;t si l'une des constructions JavaScript suivantes est utilis&#233;e : &lt;code class='spip_code' dir='ltr'&gt;void&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;try&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;catch&lt;/code&gt; ou &lt;code class='spip_code' dir='ltr'&gt;throw&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;table&gt;
++++ &lt;table width=&quot;97%&quot; border=&quot;1&quot; cellpadding=&quot;6&quot; cellspacing=&quot;0&quot;&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;La partie gauche de l'op&#233;rateur d'affectation doit &#234;tre une variable ou une propri&#233;t&#233;&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un op&#233;rateur d'affectation a &#233;t&#233; utilis&#233;, mais la variable ou la propri&#233;t&#233; situ&#233;e &#224; sa gauche n'&#233;tait pas valide.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Le bloc d'instruction doit &#234;tre termin&#233; par '&lt;/i&gt;'&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un groupe d'instructions a &#233;t&#233; d&#233;clar&#233; entre accolades, mais l'accolade de fermeture est absente.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Ev&#233;nement attendu&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un gestionnaire &lt;code class='spip_code' dir='ltr'&gt;on(MouseEvent)&lt;/code&gt; a &#233;t&#233; d&#233;clar&#233;, mais aucun &#233;v&#233;nement n'a &#233;t&#233; sp&#233;cifi&#233; ou le syst&#232;me a d&#233;tect&#233; un symbole inattendu &#224; la place d'un &#233;v&#233;nement.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Ev&#233;nement souris sp&#233;cifi&#233; non valide&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Le script contient un &#233;v&#233;nement de souris non valide dans un gestionnaire. Vous trouverez une liste d'&#233;v&#233;nements de souris et de clip valides dans l'entr&#233;e &lt;code class='spip_code' dir='ltr'&gt;On(MouseEvent)&lt;/code&gt; du dictionnaire ActionScript.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Identifiant de code-cl&#233; attendu&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Vous devez sp&#233;cifier un code de touche. L'annexe B contient une liste des codes de touches.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Code virtuel de touche non valide&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Le code de touche sp&#233;cifi&#233; n'existe pas.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Caract&#232;res de fin non valides&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Le script ou l'expression a &#233;t&#233; analys&#233; correctement, mais les caract&#232;res de fin suppl&#233;mentaires n'ont pas pu &#234;tre analys&#233;s&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Nom de fonction attendu&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Le nom sp&#233;cifi&#233; pour cette fonction n'est pas un nom de fonction valide.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Nom de param&#232;tre attendu&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un nom de param&#232;tre (argument) &#233;tait attendu dans une d&#233;claration de fonction, mais un symbole inattendu a &#233;t&#233; rencontr&#233;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;'else' rencontr&#233; sans 'if' correspondant&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Une instruction &lt;code class='spip_code' dir='ltr'&gt;else&lt;/code&gt; a &#233;t&#233; rencontr&#233;e, mais sans l'instruction &lt;code class='spip_code' dir='ltr'&gt;if&lt;/code&gt; qui doit la pr&#233;c&#233;der. Vous ne pouvez utiliser l'instruction &lt;code class='spip_code' dir='ltr'&gt;else&lt;/code&gt; qu'avec une instruction &lt;code class='spip_code' dir='ltr'&gt;if&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Le nom de s&#233;quence doit &#234;tre une cha&#238;ne entre guillemets&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;L'argument de s&#233;quence d'une action &lt;code class='spip_code' dir='ltr'&gt;gotoAndPlay&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;gotoAndStop&lt;/code&gt; ou &lt;code class='spip_code' dir='ltr'&gt;ifFrameLoaded&lt;/code&gt; &#233;tait de type erron&#233;. L'argument de s&#233;quence doit &#234;tre une constante de cha&#238;ne.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Erreur interne&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Une erreur interne s'est produite dans le compilateur ActionScript. Veuillez envoyer le fichier FLA qui a produit cette erreur &#224; Macromedia, avec des instructions d&#233;taill&#233;es permettant de reproduire le message.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Des chiffres en hexad&#233;cimal sont attendus apr&#232;s 0x&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;La s&#233;quence &lt;code class='spip_code' dir='ltr'&gt;0x&lt;/code&gt; a &#233;t&#233; rencontr&#233;e, mais n'&#233;tait pas suivie de chiffres hexad&#233;cimaux valides.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Erreur &#224; l'ouverture du fichier inclus 'fichier' : fichier introuvable&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Une erreur s'est produite lors de l'ouverture d'un fichier inclus dans la directive &lt;code class='spip_code' dir='ltr'&gt;include&lt;/code&gt;. Le fichier &#233;tait absent.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Directive #include mal formul&#233;e&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Une directive &lt;code class='spip_code' dir='ltr'&gt;include&lt;/code&gt; n'a pas &#233;t&#233; correctement r&#233;dig&#233;e. Une directive &lt;code class='spip_code' dir='ltr'&gt;include&lt;/code&gt; doit avoir la syntaxe suivante :&lt;/p&gt; &lt;p&gt;&lt;code class='spip_code' dir='ltr'&gt;#include &quot;unFichier.as&quot;&lt;/code&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Le commentaire multiligne n'est pas termin&#233;&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un commentaire multilignes commen&#231;ant par &lt;code class='spip_code' dir='ltr'&gt;/*&lt;/code&gt; n'a pas de balise &lt;code class='spip_code' dir='ltr'&gt;*/&lt;/code&gt; de fermeture.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;La cha&#238;ne litt&#233;rale n'est pas correctement termin&#233;e&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un litt&#233;ral de cha&#238;ne commence par un guillemet droit ouvrant (simple ou double), mais le guillemet de fermeture est absent.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Nombre de param&#232;tres incorrect. &lt;fonction&gt; n&#233;cessite un nombre de param&#232;tres compris entre &lt;min&gt; et &lt;max&gt;&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Une fonction a &#233;t&#233; appel&#233;e, mais un nombre inattendu de param&#232;tres a &#233;t&#233; rencontr&#233;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Nom de propri&#233;t&#233; attendu dans GetProperty&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;La fonction &lt;code class='spip_code' dir='ltr'&gt;getProperty&lt;/code&gt; a &#233;t&#233; appel&#233;e, mais le deuxi&#232;me param&#232;tre n'&#233;tait pas le nom d'une propri&#233;t&#233; de clip.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Le param&#232;tre &lt;param&#232;tre&gt; ne peut pas &#234;tre d&#233;clar&#233; plusieurs fois&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un nom de param&#232;tre est apparu plusieurs fois dans la liste des param&#232;tres d'une d&#233;claration de fonction. Tous les noms de param&#232;tres doivent &#234;tre uniques.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;La variable &lt;variable&gt; ne peut pas &#234;tre d&#233;clar&#233;e plusieurs fois&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un nom de variable est apparu plusieurs fois dans une instruction &lt;code class='spip_code' dir='ltr'&gt;var&lt;/code&gt;. Tous les noms de variables dans une seule instruction &lt;code class='spip_code' dir='ltr'&gt;var&lt;/code&gt; doivent &#234;tre uniques.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Les gestionnaires 'on' ne peuvent pas &#234;tre imbriqu&#233;s dans d'autres gestionnaires 'on'&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un gestionnaire &lt;code class='spip_code' dir='ltr'&gt;on&lt;/code&gt; a &#233;t&#233; d&#233;clar&#233; &#224; l'int&#233;rieur d'un autre gestionnaire &lt;code class='spip_code' dir='ltr'&gt;on&lt;/code&gt;. Tous les gestionnaires &lt;code class='spip_code' dir='ltr'&gt;on&lt;/code&gt; doivent appara&#238;tre dans le niveau sup&#233;rieur d'une liste d'actions.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Les gestionnaires 'onClipEvent' ne peuvent pas &#234;tre imbriqu&#233;s dans d'autres gestionnaires 'onClipEvent'&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un gestionnaire &lt;code class='spip_code' dir='ltr'&gt;onClipEvent&lt;/code&gt; a &#233;t&#233; d&#233;clar&#233; &#224; l'int&#233;rieur d'un autre gestionnaire &lt;code class='spip_code' dir='ltr'&gt;onClipEvent&lt;/code&gt;. Tous les gestionnaires &lt;code class='spip_code' dir='ltr'&gt;onClipEvent&lt;/code&gt; doivent appara&#238;tre dans le niveau sup&#233;rieur d'une liste d'actions.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;L'instruction doit appara&#238;tre dans le gestionnaire 'on'&lt;/p&gt; &lt;p&gt;(le message appara&#238;t pour le format Flash 5)&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Dans les actions d'occurrences de bouton, une instruction a &#233;t&#233; d&#233;clar&#233;e sans &#234;tre encadr&#233;e par un bloc &lt;code class='spip_code' dir='ltr'&gt;on&lt;/code&gt;. Toutes les actions d'occurrences de bouton doivent appara&#238;tre &#224; l'int&#233;rieur d'un bloc &lt;code class='spip_code' dir='ltr'&gt;on&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;L'instruction doit appara&#238;tre dans le gestionnaire 'onClipEvent' (le message appara&#238;t pour le format Flash 5)&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Dans les actions d'occurrences de clip, une instruction a &#233;t&#233; d&#233;clar&#233;e sans &#234;tre encadr&#233;e par un bloc &lt;code class='spip_code' dir='ltr'&gt;onClipEvent&lt;/code&gt;. Toutes les actions d'occurrences de clip doivent appara&#238;tre &#224; l'int&#233;rieur d'un bloc &lt;code class='spip_code' dir='ltr'&gt;onClipEvent&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;L'instruction doit appara&#238;tre dans le gestionnaire 'on' ou 'onClipEvent'&lt;/p&gt; &lt;p&gt;(le message appara&#238;t pour le format Flash MX)&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Dans les actions d'occurrences de clip, une instruction a &#233;t&#233; d&#233;clar&#233;e sans &#234;tre encadr&#233;e par un bloc &lt;code class='spip_code' dir='ltr'&gt;on&lt;/code&gt; ou &lt;code class='spip_code' dir='ltr'&gt;onClipEvent&lt;/code&gt;. Toutes les actions d'occurrences de clip doivent appara&#238;tre &#224; l'int&#233;rieur d'un bloc &lt;code class='spip_code' dir='ltr'&gt;on&lt;/code&gt; ou &lt;code class='spip_code' dir='ltr'&gt;onClipEvent&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Les &#233;v&#233;nements souris ne sont autoris&#233;s que pour les occurrences bouton (le message appara&#238;t pour le format Flash 5)&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un gestionnaire d'&#233;v&#233;nement de bouton a &#233;t&#233; d&#233;clar&#233; dans une liste d'actions d'image ou une liste d'actions d'occurrence de clip. Les &#233;v&#233;nements de bouton ne sont autoris&#233;s que dans les listes d'actions des occurrences de bouton.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Les &#233;v&#233;nements de clip ne sont autoris&#233;s que pour les occurrences de clip&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un gestionnaire d'&#233;v&#233;nement de clip a &#233;t&#233; d&#233;clar&#233; dans une liste d'actions d'image ou une liste d'actions d'occurrence de bouton. Les &#233;v&#233;nements de clip ne sont autoris&#233;s que dans les listes d'actions des occurrences de clip.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;D&#233;claration de fonction interdite ici&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Il est impossible d'utiliser une fonction nomm&#233;e lors de sa d&#233;claration dans une affectation.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Dupliqu&#233; dans la liste d'&#233;v&#233;nement&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un gestionnaire &lt;code class='spip_code' dir='ltr'&gt;on&lt;/code&gt; a &#233;t&#233; sp&#233;cifi&#233; avec un &#233;v&#233;nement en doublon.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Ev&#233;nement de clip sp&#233;cifi&#233; invalide&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Un gestionnaire &lt;code class='spip_code' dir='ltr'&gt;onClipEvent&lt;/code&gt; ne peut accepter que des &#233;v&#233;nements &lt;code class='spip_code' dir='ltr'&gt;load&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;enterForm&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;unload&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;mouseMove&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;mouseDown&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;mouseUp&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;keyDown&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;keyUp&lt;/code&gt; ou &lt;code class='spip_code' dir='ltr'&gt;data&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;L'identifiant &lt;identifiant&gt; non-sensible &#224; la hauteur de casse va masquer l'objet int&#233;gr&#233; &lt;objet&gt;&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Les instructions ActionScript devant &#234;tre sp&#233;cifi&#233;es en faisant attention &#224; la hauteur de casse, un identifiant ne respectant pas la hauteur de casse obscurcirait un objet int&#233;gr&#233;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Les instructions 'case' ne peuvent &#234;tre utilis&#233;es que dans une instruction 'switch'&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Les instructions conditionnelles doivent &#234;tre utilis&#233;es dans des instructions &lt;code class='spip_code' dir='ltr'&gt;switch&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr valign=top&gt;&lt;td&gt;
&lt;p&gt;Les instructions 'case' doivent se terminer par un ' :'&lt;/p&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;Chaque instruction conditionnelle d'une instruction &lt;code class='spip_code' dir='ltr'&gt;switch&lt;/code&gt; doit se terminer par une virgule.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Afficher la date, l'heure et faire tourner les aiguilles d'une HORLOGE</title>
		<link>http://www.walldown.com/Afficher-la-date-l-heure-et-faire.html</link>
		<guid isPermaLink="true">http://www.walldown.com/Afficher-la-date-l-heure-et-faire.html</guid>
		<dc:date>2002-06-05T13:23:09Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Klaude Charlier</dc:creator>



		<description>- etape 1 : Les variables Cr&#233;ation des champs textes dynamiques et attribution des noms de variables datetextfield contiendra la chaine de caractere d&#233;terminant la date heureflash, minuteflash et secondeflash contiendront les h, m et s. ces 3 variables seront utilis&#233;es pour calculer la rotation des aiguilles. - Etape 2 : les clips Il faut cr&#233;er trois clips pour les aiguilles et leur donner des noms d'occurence(heure, minute et seconde) qui vont &#234;tre r&#233;utilis&#233;s dans le script servant &#224; les (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src=&quot;http://www.walldown.com/local/cache-vignettes/L101xH107/arton97-95391.jpg&quot; alt=&quot;&quot; align=&quot;right&quot; width='101' height='107' class='spip_logos' style='height:107px;width:101px;' /&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;- etape 1 : Les variables&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Cr&#233;ation des champs textes dynamiques et attribution des noms de &lt;strong&gt;variables&lt;/strong&gt;
&lt;br /&gt;&lt;img src=&quot;http://www.walldown.com/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; datetextfield contiendra la chaine de caractere d&#233;terminant la date
&lt;br /&gt;&lt;img src=&quot;http://www.walldown.com/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; heureflash, minuteflash et secondeflash contiendront les h, m et s.
ces 3 variables seront utilis&#233;es pour calculer la rotation des aiguilles.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- Etape 2 : les clips&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Il faut cr&#233;er trois clips pour les aiguilles et leur donner des noms d'occurence(heure, minute et seconde)
qui vont &#234;tre r&#233;utilis&#233;s dans le script servant &#224; les faire tourner.&lt;/p&gt; &lt;dl class='spip_document_58 spip_documents spip_documents_center' &gt;
&lt;dt&gt;&lt;img src='http://www.walldown.com/local/cache-vignettes/L357xH284/tomates_greg-c5168.jpg' width='357' height='284' alt='JPEG - 27 ko' style='height:284px;width:357px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;- Etape 3 : le script&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Voici le script &#224; placer sur la premi&#232;re frame.
ils se compose de deux parties bien distinctes.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;// Creation de l'objet date et en tirer les diff&#233;rentes valeurs &#224; attribuer &#224; nos variables&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;myDate = new Date();&lt;br /&gt; dateTextField = (mydate.getMonth()+&quot;/&quot;+myDate.getDate()+&quot;/&quot;+mydate.getFullYear());&lt;br /&gt; heureflash = (mydate.getHours());&lt;br /&gt; minuteflash = (myDate.getMinutes());&lt;br /&gt; secondeflash = (mydate.getSeconds());&lt;br /&gt; RotaH = heureflash;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;// cette seconde partie fait tourner les aiguilles&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;RotaM = Minuteflash;&lt;br /&gt; RotaS = Secondeflash;&lt;br /&gt; setProperty (&quot;/Heure&quot;, _rotation, Number(RotaH)+Number((RotaM/12)));&lt;br /&gt; setProperty (&quot;/Minute&quot;, _rotation, RotaM*6);&lt;br /&gt; setProperty (&quot;/Seconde&quot;, _rotation, RotaS*6);&lt;br /&gt; gotoAndPlay (1);&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;cliquez ci-dessous pour t&#233;l&#233;charger le FLA et le SWF&lt;/p&gt;
&lt;dl class='spip_document_60 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;img src='http://www.walldown.com/local/cache-vignettes/L212xH181/calques-ff124.gif' width='212' height='181' alt='GIF - 7.3 ko' style='height:181px;width:212px;' /&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		
		<enclosure url="http://www.walldown.com/IMG/swf/doc-58-2.swf" length="4274" type="text/plain" />
		

	</item>
<item xml:lang="fr">
		<title>url encoded format</title>
		<link>http://www.walldown.com/url-encoded-format.html</link>
		<guid isPermaLink="true">http://www.walldown.com/url-encoded-format.html</guid>
		<dc:date>2002-03-30T13:15:45Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Klaude Charlier</dc:creator>



		<description>Pour que votre fichier texte passe correctement les variables et que le contenu s'affiche correctement dans flash, vous pouvez utiliser le convertisseur &quot;ENCODE&quot; ci-dessous. 1144 273 LE CHIPENDALE HINDOU Ou vous pouvez le fabriquer vous m&#234;me avec ce petit actionscript : placez un champs dynamique variable= entree &#224; gauche placez un champs dynamique variable= sortie &#224; droite puis placez l'AS suivant sur une frame sortie=escape( entree); votre texte sera converti en url encoded (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Pour que votre fichier texte passe correctement les variables et que le contenu s'affiche correctement dans flash, vous pouvez utiliser le convertisseur &quot;ENCODE&quot; ci-dessous.&lt;/p&gt;
&lt;dl class='spip_document_9 spip_documents spip_documents_center' &gt;
&lt;dt&gt;&lt;img src='http://www.walldown.com/IMG/jpg/doc-9.jpg' width='214' height='287' alt='JPEG - 22 ko' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-9 spip_doc_titre' style='width:214px;'&gt;&lt;strong&gt;1144 273&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='crayon document-descriptif-9 spip_doc_descriptif' style='width:214px;'&gt;LE CHIPENDALE HINDOU
&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Ou vous pouvez le fabriquer vous m&#234;me avec ce petit actionscript :&lt;/p&gt; &lt;p&gt;placez un champs dynamique variable= entree &#224; gauche
placez un champs dynamique variable= sortie &#224; droite&lt;/p&gt; &lt;p&gt;puis placez l'AS suivant sur une frame&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;sortie=escape( entree);&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;votre texte sera converti en url encoded format&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>FLASH auto-detection</title>
		<link>http://www.walldown.com/FLASH-auto-detection.html</link>
		<guid isPermaLink="true">http://www.walldown.com/FLASH-auto-detection.html</guid>
		<dc:date>2002-03-26T22:26:19Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Klaude Charlier</dc:creator>



		<description>Inutile de vous dire combien je suis passionn&#233; par le logiciel FLASH. Certains pensent que flash est lourd (un flash mal construit est lourd oui !) D'autres trouvent les intros gratuites et chiantes (celles qui n&#233;cessitent un &quot;skip intro&quot; oui ! voir le site du m&#234;me nom) D'autres encore pensent qu'ils ne seront pas vu par la majorit&#233;... Essayez d'exporter en FLASH 4, voir 3 si les action scripts utilis&#233;s le permettent Et si ce n'est pas suffisant pour convaincre votre client, faites une version HTML (...)

-
&lt;a href="http://www.walldown.com/-Flash-.html" rel="directory"&gt;Flash&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Inutile de vous dire combien je suis passionn&#233; par le logiciel FLASH.&lt;/p&gt; &lt;p&gt;Certains pensent que flash est lourd (un flash mal construit est lourd oui !)
D'autres trouvent les intros gratuites et chiantes (celles qui n&#233;cessitent un &quot;skip intro&quot; oui ! voir le site du m&#234;me nom)
D'autres encore pensent qu'ils ne seront pas vu par la majorit&#233;... Essayez d'exporter en FLASH 4, voir 3 si les action scripts utilis&#233;s le permettent&lt;/p&gt; &lt;p&gt;Et si ce n'est pas suffisant pour convaincre votre client, faites une version HTML du site et sur la home page placez ces VB et javascripts qui dirigeront automatiquement les internautes vers la version FLASH si ils ont le plugin. Ne leur donnez pas le choix entre les 2 versions, certains sont capables de croire que la version html sera mieux... alors qu'ils ont le plugin.
Voici le code &#224; placer dans le header de votre page d'autodetection&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Attention : &#224; la fin du script, les lignes :
window.location = &quot;&lt;a href='http://www.page/' class='spip_out' rel='nofollow'&gt;http://www.page&lt;/a&gt; avec flash
window.location = &quot;http://www.version html.htm
doivent contenir les url des versions correspondantes&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt; &lt;script language=&quot;JavaScript&quot;&gt;&lt;br /&gt; &lt;!--&lt;br /&gt; var useFlash = navigator.mimeTypes &amp;&amp;&lt;br /&gt; navigator.mimeTypes[&quot;application/x-shockwave-flash&quot;] &amp;&amp;&lt;br /&gt; navigator.mimeTypes[&quot;application/x-shockwave-flash&quot;].enabledPlugin;&lt;br /&gt; //--&gt;&lt;br /&gt; &lt;/script&gt;&lt;br /&gt; &lt;br /&gt; &lt;script language=&quot;VBScript&quot;&gt;&lt;br /&gt; &lt;!--&lt;br /&gt; On error resume next&lt;br /&gt; useFlash = NOT IsNull(CreateObject(&quot;ShockwaveFlash.ShockwaveFlash&quot;))&lt;br /&gt; --&gt;&lt;br /&gt; &lt;br /&gt; &lt;/script&gt;&lt;br /&gt; &lt;script language=&quot;JavaScript&quot;&gt;&lt;br /&gt; &lt;!--&lt;br /&gt; if ( useFlash ) {&lt;br /&gt; window.location = &quot;http://www.page avec flash&quot;;&lt;br /&gt; } else {&lt;br /&gt; window.location = &quot;http://www.version html.htm&quot;;&lt;br /&gt; }&lt;br /&gt; //--&gt;&lt;br /&gt; &lt;/script&gt; &lt;/code&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
