Sujets sur : texte
Cours ActionScript 3 ‘texte’
Création d’un effet « texte défilant »

Dans ce tutoriel ActionScript, je réponds à une question posée par un membre de la Formation AS3 Facile.
Comment réaliser un effet de défilement sur du texte ?
Voici ce que vous allez apprendre dans ce Tutoriel ActionScript Flash :
- Création d’une classe utilitaire, réutilisable pour tous vos projets flash.
- Création d’une classe pour la gestion du défilement d’un champ texte.
- Utilisation des polices chargées dynamiquement dans le texte défilant.
- Comment gérer le focus sur un champ texte input TextField, pour effectuer différentes actions.
Cette formation AS3 vous permettra d’ajouter des textes défilants dans vos applications flash.
Texte Défilant
Version démonstration
Ci-dessous un exemple d’utilisation de la classe utilitaire « texte défilant ».
1 | http://e6msyji6epr.exactdn.com/wp-content/uploads/2012/03/texte-defilant.swf |
Télécharger le code source du cours AS3
Vous trouverez l’ensemble du code source commenté pour vous aider à l’améliorer.
[codesyntax lang= »actionscript3″ title= »com.as3facile.utils.text.TextDefil » bookmarkname= »com.as3facile.utils.text.TextDefil »]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | /** The Initial Developer of the Original Code is Matthieu - https://www.actionscript-facile.com Portions created by the Initial Developer are Copyright (C) 2010 the Initial Developer. All Rights Reserved. Contributor(s) : */ package com.as3facile.utils.text { import flash.events.TimerEvent; import flash.utils.Timer; import flash.text.TextField; /** * Permet d'afficher un texte avec un effet de défilement. * * @author Matthieu */ public class TextDefil { private var oText : TextField; private var sTextInput : String; private var oTimer : Timer; private var nIndex : int; private var sTxtDefil : String; /** * Constructeur. * * @param txtDefil : l'objet TextField pré-configuré qui recevra le texte à afficher. * */ public function TextDefil(txtDefil:TextField) { oText = txtDefil; oTimer = new Timer (95);// vitesse de défilement de 95 ms par défaut oTimer.addEventListener (TimerEvent.TIMER, onDefilTxt); } /** * Affiche le texte petit à petit. * Possibilité d'ajouter d'autrse effets sur le texte. * */ private function onDefilTxt(event : TimerEvent) : void { sTxtDefil += sTextInput.charAt (nIndex); // ajoute les caractères un par un au texte complet oText.text = sTxtDefil;// mise à jour du texte nIndex++;// caractère suivant // une fois que la phrase est affichée entièrement, arrêt du Timer if (nIndex == sTextInput.length) oTimer.stop(); } /** * Lance l'affichage du texte, lettre une par une. * @param value : le texte à afficher. * */ public function startDefil(value:String):void { sTextInput = value; oText.text = sTxtDefil = ""; nIndex = 0; oTimer.start(); } /** * Arrête le défilement du texte. * */ public function stopDefil():void { oTimer.stop(); } /** * Vitesse de défilement en ms. * */ public function setSpeed(value:Number) : void { oTimer.delay = value; } /** * Détruit l'objet proprement. * */ public function destroy() : void { oTimer.removeEventListener (TimerEvent.TIMER, onDefilTxt); } } } |
[/codesyntax]
Télécharger “Effet texte défilant” ex-texte-defilant.zip – Téléchargé 1189 fois – 194,38 KoPosez votre question ActionScript Flash !
Rencontrez-vous des difficultés dans votre programmation Flash ?
Dites-moi les sujets que vous souhaitez que j’aborde dans les prochains tutoriels ActionScript.
Comment éviter la mise en cache d’un swf / fichier xml en AS3 ?

Nous allons découvrir une astuce très simple pour complètement oublier la mise en cache du Flash et du Navigateur Internet (Firefox, Google Chrome, Internet Explorer…).
Introduction
Un problème qui revient souvent avec Flash sous différentes forme :
- je charge un fichier xml dans Flash et les données affichées ne sont pas à jour!
- je modifie le swf, la page web m’affiche toujours l’ancienne version du swf, toujours pas de mise à jour!
Et tout cela provient de la mise en cache des données (swf, xml, texte…) par votre Navigateur Web et Flash.
Utilisation d’une variable aléatoire
Désactiver le cache des fichiers xml, eden et textes
Il suffit d’utiliser une variable générée aléatoirement pour charger vos fichiers de configuration (xml, eden, texte).
Dans votre code AS3, ajoutez tout simplement une variable aléatoire lorsque vous chargez un fichier de configuration.
[codesyntax lang= »actionscript3″ title= »URLRequest » bookmarkname= »URLRequest »]
1 2 3 4 5 6 7 8 9 10 11 12 | // chargement du fichier XML var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler ); loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler ); // chargement du fichier xml et gestion du cache du navigateur var sXml:String = 'https://www.actionscript-facile.com/ressources/xml/interface.xml?nocache='+Math.random()*28; Logger.debug ("url : "+sXml); // debug de l'application avec l'extension firefox Firebug var file:URLRequest = new URLRequest(sXml); loader.load(file ); |
[/codesyntax]
En principe, j’utilise la fonction AS3 Math.random(). Il est possible d’utiliser la fonction Date() ou une autre. L’important est d’appeler votre fichier xml avec une variable aléatoire.
Télécharger le code source complet sur l’article : Création d’un Mini Flex avec les Composants AS3 Facile. C’est un fichier xml qui détermine le contenu affiché par le swf.
Amusez-vous ensuite à modifier le contenu du fichier xml pour mettre à jour les informations affichées par le swf.
Désactiver le cache du swf
Pour afficher un swf dans une page Web tout en désactivant sa mise en cache, j’utilise exactement la même astuce.
C’est à dire, je crée une variable générée aléatoirement avec le chemin de mon swf. Regardez l’exemple ci-dessous (la toute dernière ligne avec echo rand(2,28)) :
[codesyntax lang= »html4strict » title= »SWFObject » bookmarkname= »SWFObject »]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <script type="text/javascript" src="swfobject.js"></script> <div id="flashcontent"> N'oubliez pas d'activer le Javascript. </div> <script language="JavaScript" type="text/javascript"> var flashvars = { contextFile: "application.eden", dataFile: "datas.xml", lang : "fr", progressColor: "0x2d2d2d", progressMessage: "Chargement en cours..." }; var params = { allowScriptAccess : "always" , bgcolor : "#ffffff" , quality : "best" } ; var attributes = { align : "middle", name: "application_musique" } ; swfobject.embedSWF("https://www.actionscript-facile.com/swf/application.swf?nocache=<?php echo rand(2,28) ?>", "flashcontent", "234", "382", "9.0.124", "expressInstall.swf", flashvars, params, attributes ); </script> |
[/codesyntax]
La fonction php rand() crée une variable aléatoire. Le navigateur croit que c’est un nouveau fichier swf, donc il le charge à chaque fois!
Consultez cet article: Comment utiliser SWFObject pour afficher du contenu flash ? . SWFObject présente l’avantage d’optimiser l’affichage des swf pour les moteurs de recherche (Google, Yahoo…).
Et vous, quelle solution utilisez-vous pour empêcher la mise en cache de Flash et du Navigateur Internet ?
Est ce que vous utilisez les header() en php, ou avez-vous une autre astuce ?
Je suis curieux de découvrir vos techniques de gestion du cache en ActionScript / Flash.