TEXTE LETTRE PAR LETTRE AS3

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 16 févr. 2010 à 00:23
 Babou - 5 mars 2014 à 16:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51301-texte-lettre-par-lettre-as3

Comment faire pour modifier le texte ??
BananaTree Messages postés 337 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 2 novembre 2010
4 mars 2010 à 16:02
c pas mal,

avec un petite classe Percolateur, et une fonction statique du genre :
public static function preparer(...):Boisson { ... }

je pense que ça pourait le faire ;-)
cs_pinacolada Messages postés 14 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 7 mars 2010
4 mars 2010 à 14:14
Quoique, il suffit d'y ajouter les lignes suivante :

var cafe:Boisson = new Boisson(mouture, eau);
cafe.addEventListener(Event.COMPLETE, function(e:Event):void { trace ("C'est prêt!")
cafe.preparer(2,10,

public function preparer(mouture:int, eau:int, longueur:int, bSucre:Boolean):Cafe {
for(var l:int=0;l<longueur;l++){
cafe.ajouter(eau, l);
cafe.integrer(moutureFine,l/20+Math.sin(l));
}
dispatchEvent(new Event(Event.COMPLETE));
cafe.sucrer(bSucre);
return cafe;
}
BananaTree Messages postés 337 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 2 novembre 2010
4 mars 2010 à 01:16
Certes !
Mais ça fait toujours pas le café ;)
cs_pinacolada Messages postés 14 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 7 mars 2010
4 mars 2010 à 00:00
Je n'ai pas envie de lancer de polémique et je comprends l'envie de tirer le forum vers le haut. Je réagis simplement au fait (après avoir regardé les autres sources de l'auteur) que celui-ci n'a que 14 ans et ne poste pas des sources "débiles".
Poster afin de partager et recevoir des réponses exaspérées ou pédantes, qui font 4 fois la longueur du code original est certainement le meilleur moyen de donner envie d'améliorer le projet initial.Cela m'enlèverait personnellement toute envie de remettre une source de quelque niveau que ce soit. La première réponse de Maxouye était pourtant plutôt claire.

Je ne sais pas si le code visible ici est le code original ou s'il a été retouché. Je ne sais pas si l'auteur l'a trouvé et adapté ou s'il l'a fait lui-même. Son côté rapide et prêt-à-l'emploi convient tout simplement à un débutant, qui pourra s'en servir dans un premier temps, le comprendre ensuite, l'améliorer peut-être.
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
3 mars 2010 à 22:04
Le but de ce site reste d'apprendre et de faire partager aux autres les connaissance afin de progresser.

Partager une source ou un code de "niveau supérieur" (je ne suis pas certain que ce terme convienne bien) permet de voir comment faire pour améliorer le projet initial ... à moins de préférer rester sur ces acquis et à ce stade, aucun interêt de poster une source ici.

Peg'
Admin Codes-Sources
cs_maxouye Messages postés 16 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 27 mai 2009
3 mars 2010 à 20:16
C'est en fait ce que je n'osais pas répondre aux premiers commentaires, ils me donnent des bonnes idées d'amélioration, mais le niveau débutant de ce code est mon niveau, mais j'ai quand même fait l'effort d'aller sur google et de regarder la signification de frameRate etc. Merci pour le 10, Fallait pas :)
cs_pinacolada Messages postés 14 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 7 mars 2010
1 mars 2010 à 18:08
Je vois écrit "niveau débutant". Ce niveau souvent ignoré...
Cette source est parfaite pour un débutant : facile à lire, configurable, utilisable "dans le monde réel".
Les améliorations proposées, désolé de le dire, ne sont pas du même niveau.
Alors je mets 10.
sylnicole Messages postés 1 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 14:23
ce code en AS3 est d'une grande clarté pour comprendre comment est structurée une application Flash, merci !
il serait intéressant d'en faire une version "sonore" pour les enfants qui apprennent à lire, en leur proposant de s'enregistrer, de s'écouter, et d'entendre la bonne prononciation.
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
17 févr. 2010 à 12:23
TROP FORT !!!!
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
17 févr. 2010 à 12:19
BananaTree Messages postés 337 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 2 novembre 2010
17 févr. 2010 à 10:18
ça existe les cafetières avec port usb ?
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
17 févr. 2010 à 08:19
MAXOUYE: Tes questions me laisse bouche bée...

public static function afficher( $champ:TextField, $texte:String, $lettreParImage:uint=1, $imagesParAjout:uint=5 ):Function{
...
var imagePassee :uint= 0 ;
// Le nombre d'image pour ajuter du texte...

var longueurAffichee :int= 0 ;
// Le nombre de caractère actuellement affiché...

function aChaqueImage( e:Event):void{
if( ++imagePassee== $imagesParAjout ){
image= 0 ;
$champ.text= $texte.substr(0,longueurAffichee) ;
longueurAffichee+= $lettreParImage ;
//
// Si tout est affiché, libérer des écoutes
if( longueurAffichee>= $texte.length ) libererEcoutes(null);
}
...

Et voilà si ton animation est de 50 images par seconde, tu met 50 !
Et si tu connais pas le frameRate, tu le calcule.
Et si tu veux que ca fasse le café,tu incorpore une cafetière...

= )
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
16 févr. 2010 à 21:27
Et si je veux mettre une lettre par secondes ?

Peg'
cs_maxouye Messages postés 16 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 27 mai 2009
16 févr. 2010 à 21:16
Si il ya 3 lettres par images, le texte s'affichera entierement plus vite que 2 lettres par images, en gros la vitesse.
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
16 févr. 2010 à 17:34
La vitesse non...
Le nom de lettre nouvelle à chaque image !
Mais là je doute. Le code est de toi ???
cs_maxouye Messages postés 16 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 27 mai 2009
16 févr. 2010 à 15:55
lettreParImage permet à l'utilisateur de faire varier la vitesse du texte ?
cs_maxouye Messages postés 16 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 27 mai 2009
16 févr. 2010 à 15:43
Bonjour, merci pour vos commentaires, pour vos idées d'amélioration, je vais essayer de retravailler tout ça, mais je ne suis pas sur d'y arriver, je suis vraiment débutant !
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
16 févr. 2010 à 14:20
Pour Peg...

WITH n'est absolument pas une fonction à éviter en AS3.
Au contraire c'est une fonction bien utile. Regardes l'aide:

http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/statements.html#with

Et tu verras...
; )
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
16 févr. 2010 à 14:14
Tu devrais extériorisé le style du texte et du champ.
C'est indépendant de l'effet. Voici ce que je te conseille:

package
{
import flash.display.* ;
import flash.text.* ;
import flash.events.* ;

public class TextDefilant{

public static function afficher( $champ:TextField, $texte:String, $lettreParImage:uint=1 ):Function{
//
// Fonction chargée de libérer des écoutes *********************************
function libererEcoutes( e:Event=null ):void{
// Suprime l'ecoute de l'enterFrame...
$champ.removeEventListener( Event.ENTER_FRAME, aChaqueImage );
//
// Suprime l'écoute de libération...
$champ.removeEventListener( Event.REMOVED_FROM_STAGE, libererEcoutes ) ;
}
//*************************************************************************

$champ.addEventListener( Event.REMOVED_FROM_STAGE, libererEcoutes );
// Au cas ou quelque'un supprimerais le champ du stage, avant que l'enterFrame ne s'autosuprime.
// Ainsi tu es sur que si l'anim n'est pas finie, à se supprimer du stage, elle se libérera de l'écoute.

$champ.addEventListener( Event.ENTER_FRAME, aChaqueImage );
// On lance l'animation à travers l'enterFrame...

var longueurAffichee :int= 0 ;
// Le nombre de caractère actuellement affiché...

// Fonction chargée d'afficher le texte ***********************************
function aChaqueImage( e:Event):void{
$champ.text= $texte.substr(0,longueurAffichee) ;
longueurAffichee+= $lettreParImage ;
//
// Si tout est affiché, libérer des écoutes
if( longueurAffichee>= $texte.length ) libererEcoutes(null);
}
//*************************************************************************

return libererEcoutes ;
// On retourne la fonction annulant l'affichage et libérant des écoutes.
// Ainsi tu puex VOLONTAIREMENT interrompre l'affichage en cours par éxécution
// de la méthode retournée...
}
}
}

Comme ca tu n'as pas besoin de créer d'instance.
Tu l'utilise comme ca :

var monChamp :TextField= new TextField();
monChamp.defaultTextFormat= new TextForamt("maPolice",maTaille,maCouleur);
TextDefilant.afficher( monChamp, "LE TEXTE QUE JE SOUHAITE VOIR AFFICHER", 2 ) ;

Et voila !!!
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
16 févr. 2010 à 00:23
Questions/Remarques :

- Pourquoi n'étends-tu pas TextField directement plutôt que de faire un Sprite dans lequel tu places un TextField ?
- Pourquoi ne pas mettre un Timer permettant de gérer le flux de texte plutôt que de rendre tout ça dépendant du FrameRate ?
- La classe externe dépends trop du contenu du fla pour être réellement utile.
- Les principes d'AS3 ne sont pas encore bien encrés, ça sent vraiment trop l'AS2 tout ça. ("with", par exemple)
- Le formatage de texte devrait être passé en paramètre plutôt que de passer quelques propriétés à la volée dans la classe.
- En pus du Timer, des méthodes play/stop/pause/resume et la propriété loop pourrait compléter la maniabilité de l'ensemble.

Peg'
Rejoignez-nous