pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDerniè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.
BananaTree
Messages postés337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDerniè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és14Date d'inscriptionjeudi 23 octobre 2003StatutMembreDerniè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és337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention 2 novembre 2010 4 mars 2010 à 01:16
Certes !
Mais ça fait toujours pas le café ;)
cs_pinacolada
Messages postés14Date d'inscriptionjeudi 23 octobre 2003StatutMembreDerniè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és6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 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és16Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention27 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és14Date d'inscriptionjeudi 23 octobre 2003StatutMembreDerniè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és1Date d'inscriptionjeudi 16 décembre 2004StatutMembreDernière intervention24 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és1158Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention 6 août 2010 17 févr. 2010 à 12:23
TROP FORT !!!!
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 17 févr. 2010 à 12:19
BananaTree
Messages postés337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention 2 novembre 2010 17 févr. 2010 à 10:18
ça existe les cafetières avec port usb ?
top30
Messages postés1158Date d'inscriptionvendredi 21 février 2003StatutMembreDerniè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és6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 16 févr. 2010 à 21:27
Et si je veux mettre une lettre par secondes ?
Peg'
cs_maxouye
Messages postés16Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention27 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és1158Date d'inscriptionvendredi 21 février 2003StatutMembreDerniè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és16Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention27 mai 2009 16 févr. 2010 à 15:55
lettreParImage permet à l'utilisateur de faire varier la vitesse du texte ?
cs_maxouye
Messages postés16Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention27 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és1158Date d'inscriptionvendredi 21 février 2003StatutMembreDerniè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:
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és6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 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.
5 mars 2014 à 16:51
4 mars 2010 à 16:02
avec un petite classe Percolateur, et une fonction statique du genre :
public static function preparer(...):Boisson { ... }
je pense que ça pourait le faire ;-)
4 mars 2010 à 14:14
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;
}
4 mars 2010 à 01:16
Mais ça fait toujours pas le café ;)
4 mars 2010 à 00:00
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.
3 mars 2010 à 22:04
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
3 mars 2010 à 20:16
1 mars 2010 à 18:08
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.
24 févr. 2010 à 14:23
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.
17 févr. 2010 à 12:23
17 févr. 2010 à 12:19
Peg'
17 févr. 2010 à 10:18
17 févr. 2010 à 08:19
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...
= )
16 févr. 2010 à 21:27
Peg'
16 févr. 2010 à 21:16
16 févr. 2010 à 17:34
Le nom de lettre nouvelle à chaque image !
Mais là je doute. Le code est de toi ???
16 févr. 2010 à 15:55
16 févr. 2010 à 15:43
16 févr. 2010 à 14:20
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...
; )
16 févr. 2010 à 14:14
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 !!!
16 févr. 2010 à 00:23
- 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'