mtlbss
Messages postés39Date d'inscriptiondimanche 29 novembre 2009StatutMembreDernière intervention 8 mai 2011
-
10 déc. 2009 à 03:49
mtlbss
Messages postés39Date d'inscriptiondimanche 29 novembre 2009StatutMembreDernière intervention 8 mai 2011
-
16 déc. 2009 à 10:57
Bonsoir, je prépare une anime qui me permettrais de calculer des moyennes via une zone de saisie et un tableau mais je n'arrive pas a faire la somme des entrées du tableau, au lieu de cela les entrées sont mises cote a cote....
Il y a 2 bouton sur la scène et 2 zone texte, je les remplacerais par des scripts, mais je veux d'abord régler le soucis du calcul
si certain d'entre vous on un peu de temps a m'offrir, je vous en serrais très reconnaissant, je débute en as3.0, du coup je passe des heures a chercher sans résultat c'est pour cela que j'ose vous ennuyer avec mes problèmes, merci par avance....^^
var valeurPourMoyenne:Array = new Array();
//"entre"bouton sur l'anime pour valider la saisie
entre.addEventListener(MouseEvent.CLICK,miseAJourTableau);
//"egal"bouton sur l'anime pour obtenir le resultat
egal.addEventListener(MouseEvent.CLICK,calcul);
function miseAJourTableau(evt:Event)
{
//"saisie"Zone texte sur l'anime pour saisir les valeurs
valeurPourMoyenne.push(saisie.text);
//"affichageValeurCalcul"Zone texte sur l'anime pour afficher
affichageValeurCalcul.text = valeurPourMoyenne.toString();
}
function calcul(evt:Event)
{
trace( "valeur dans le tableau: "+valeurPourMoyenne );
var lng:int = valeurPourMoyenne.length;
trace("nombre de valeur: "+lng);
var total:Number = 0;
for (var i:Number = 0; i< lng; i++)
{
total += valeurPourMoyenne[i];
}
var moyenne = total/lng;
trace("totale: "+total);
trace("moyenne: "+moyenne);
}
mtlbss
Messages postés39Date d'inscriptiondimanche 29 novembre 2009StatutMembreDernière intervention 8 mai 2011 10 déc. 2009 à 13:39
oki, je comprend mieux pourquoi, les valeur sont donc cote a cote, pour les transformer en Number, je vais chercher comment faire.
merci, beaucoup pour cette réponse.
Bonne journée......^^
mtlbss
Messages postés39Date d'inscriptiondimanche 29 novembre 2009StatutMembreDernière intervention 8 mai 2011 10 déc. 2009 à 13:51
Super, merci beaucoup crackter, j'ai cru que ta reponse allai me faire chercher encore longtemps, mais en faite c'est simple comme bonjours, vraiment c'est cool, je met la correction du code, j'ai juste crée une var Number qui renvoie au valeur du tableau....
si je puis me permettre, comme je débute, vous auriez pas quelques remarque a me faire sur l'écriture du code, comme la syntaxe ou une simplification du script, en tout cas un grand merci crackter.....^^
var valeurPourMoyenne:Array = new Array();
//"entre"bouton sur l'anime pour valider la saisie
entre.addEventListener(MouseEvent.CLICK,miseAJourTableau);
//"egal"bouton sur l'anime pour obtenir le resultat
egal.addEventListener(MouseEvent.CLICK,calcul);
function miseAJourTableau(evt:Event)
{
//"saisie"Zone texte sur l'anime pour saisir les valeurs
valeurPourMoyenne.push(saisie.text);
//"affichageValeurCalcul"Zone texte sur l'anime pour afficher
affichageValeurCalcul.text = valeurPourMoyenne.toString();
}
function calcul(evt:Event)
{
trace( "valeur dans le tableau: "+valeurPourMoyenne );
var lng:int = valeurPourMoyenne.length;
trace("nombre de valeur: "+lng);
var total:Number = 0;
for (var i:Number = 0; i< lng; i++)
{
var valeurNumber:Number = valeurPourMoyenne[i]
total += valeurNumber;
}
var moyenne = total/lng;
trace("totale: "+total);
trace("moyenne: "+moyenne);
}
mtlbss
Messages postés39Date d'inscriptiondimanche 29 novembre 2009StatutMembreDernière intervention 8 mai 2011 10 déc. 2009 à 22:32
Bonsoir, je suis pas sur que sa intéresse beaucoup de monde, mais bon, j'ai fait des modifs sur mon script afin de n'avoir plus que du script, j'ai encore quelques idées a développer pour rendre l'interface plus pratique.
Encore un grand merci a tous pour le partage des connaissances et des codes...^^
//different etats du bouton
var up:MovieClip = new MovieClip()
up.graphics.beginFill(0x666666,1);
up.graphics.drawRect(550,20,50,50);
up.graphics.endFill();
var over:MovieClip = new MovieClip()
over.graphics.beginFill(0x333333, 1);
over.graphics.drawRect(550,20,50,50);
over.graphics.endFill();
var down:MovieClip = new MovieClip()
down.graphics.beginFill(0xcccccc, 1);
down.graphics.drawRect(550,20,50,50);
down.graphics.endFill();
//zones de texte
var valeurTexte:TextField = createCustomTextField(10, 10, 500, 60);
valeurTexte.type = TextFieldType.DYNAMIC;
valeurTexte.text = "valeurs";
var nombreValeurTexte:TextField = createCustomTextField(10, 85, 120, 20);
nombreValeurTexte.type = TextFieldType.DYNAMIC;
nombreValeurTexte.text = "nombre de valeurs";
var sommeValeurTexte:TextField = createCustomTextField(10, 120, 200, 20);
sommeValeurTexte.type = TextFieldType.DYNAMIC;
sommeValeurTexte.text = "somme des valeurs";
var resultatTexte:TextField = createCustomTextField(10, 155, 200, 20);
resultatTexte.type = TextFieldType.DYNAMIC;
resultatTexte.text = "resultats";
var saisie:TextField = createCustomTextField(10, 190, 50, 20);
saisie.type = TextFieldType.INPUT;
saisie.text = "";
//tableau
var valeurPourMoyenne:Array = new Array();
//bouton
var entre:SimpleButton = new SimpleButton(up, over, down, up)
addChild(entre)
//definition des parametres des zone de texte
function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField
{
var result:TextField = new TextField();
result.x = x;
result.y = y;
result.width = width;
result.height = height;
result.background = true;
result.border = true;
addChild(result);
return result;
}
//ecouteur boutton
entre.addEventListener(MouseEvent.CLICK,miseAJourTableau);
entre.addEventListener(MouseEvent.CLICK,calcul);
//entre des donnees dans le tableau
function miseAJourTableau(evt:Event)
{
valeurPourMoyenne.push(saisie.text);
}
//calcul
function calcul(evt:Event)
{
addChild ( valeurTexte );
valeurTexte.text = "valeur dans le tableau: "+valeurPourMoyenne.toString();
var lng:int = valeurPourMoyenne.length;
addChild ( nombreValeurTexte );
nombreValeurTexte.text = "nombre de valeur: "+lng.toString();
var total:Number = 0;
for (var i:Number = 0; i< lng; i++)
{
var valeurNumber:Number = valeurPourMoyenne[i]
total += valeurNumber;
}
mtlbss
Messages postés39Date d'inscriptiondimanche 29 novembre 2009StatutMembreDernière intervention 8 mai 2011 11 déc. 2009 à 22:27
Bonsoir, je termine mon anime pour calculer des moyennes, tout en script et au clavier. Je pense que se script pourrait être largement optimisé, mais je n'est pas la connaissance suffisante pour mieux.
//formatage texte
var format:TextFormat = new TextFormat();
format.font = "Trebuchet MS";
format.color = 0xffffff;
format.size = 20;
//zones de textes
var valeurTexte:TextField = createCustomTextField(20, 20, 760, 300);
valeurTexte.defaultTextFormat = format;
valeurTexte.type = TextFieldType.DYNAMIC;
valeurTexte.text = "valeurs: ";
valeurTexte.multiline = true;
valeurTexte.wordWrap = true;
var nombreValeurTexte:TextField = createCustomTextField(20, 325, 760, 30);
nombreValeurTexte.defaultTextFormat = format;
nombreValeurTexte.type = TextFieldType.DYNAMIC;
nombreValeurTexte.text = "nombre de valeurs: ";
var sommeValeurTexte:TextField = createCustomTextField(20, 360, 760, 30);
sommeValeurTexte.defaultTextFormat = format;
sommeValeurTexte.type = TextFieldType.DYNAMIC;
sommeValeurTexte.text = "somme des valeurs: ";
var resultatTexte:TextField = createCustomTextField(20, 395, 760, 30);
resultatTexte.defaultTextFormat = format;
resultatTexte.type = TextFieldType.DYNAMIC;
resultatTexte.text = "resultats: ";
var texteInstruction:TextField = createCustomTextField(20, 430, 250, 60);
texteInstruction.defaultTextFormat = format;
texteInstruction.type = TextFieldType.DYNAMIC;
texteInstruction.text = "entrez vos valeurs ici ----> touche-Enter-pour valider";
texteInstruction.multiline = true;
texteInstruction.wordWrap = true;
var saisie:TextField = createCustomTextField(275, 430, 505, 30);
saisie.defaultTextFormat = format;
saisie.type = TextFieldType.INPUT;
saisie.text = "";
//tableau
var valeurPourMoyenne:Array = new Array();
//definition des parametres des zone de texte
function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField
{
var result:TextField = new TextField();
result.x = x;
result.y = y;
result.width = width;
result.height = height;
result.background = false;
result.border = true;
result.borderColor = 0xffffff;
addChild(result);
return result;
}
//ecouteur touche enter
this.addEventListener(KeyboardEvent.KEY_DOWN, toucheDown);
//fonction clavier
function toucheDown(evt:KeyboardEvent)
{
//touche enter keycode 13
if (evt.keyCode == 13)
{
//inserer les valeur dans le tableau
valeurPourMoyenne.push(saisie.text);
//affichage zone texte et contenu
addChild ( valeurTexte );
valeurTexte.text = "valeur dans le tableau: "+valeurPourMoyenne.toString();
//recuperation du nombre de valeur
var lng:int = valeurPourMoyenne.length;
//affichage zone texte et contenu
addChild ( nombreValeurTexte );
nombreValeurTexte.text = "nombre de valeur: "+lng.toString();
//calcul de la somme des valeurs
var total:Number = 0;
for (var i:Number = 0; i< lng; i++)
{
var valeurNumber:Number = valeurPourMoyenne[i]
total += valeurNumber;
}
//moyenne
var moyenne = total/lng;
//affichage zone texte et contenu
addChild ( sommeValeurTexte );
sommeValeurTexte.text = "somme des valeurs: "+total.toString();
addChild ( resultatTexte );
resultatTexte.text = "moyenne: "+moyenne.toString();
saisie.text = "";
}
}
Ici, cela n'a rien à voir avec une optimisation et ton code marche très bien car tu es sur un code "in flash", mais pense, vue que tu as l'air motivé pour coder, qu'il se peut qu'un jour tu fasses des classes, et là c'est mieux, tout simplement ;). En tout cas c'est bien, rare sont ceux qui pensent à faire une initialisation de la variable de condition pour une boucle, beaucoup ont tendance à faire un :
for (var i:int=0;i<monTableau.length;i++)
sans se douter que l'accès à la fonction length (sisi c'est une fonction ^^) est un bouffe ressource lorsque l'on fait des boucles énormes.
mtlbss
Messages postés39Date d'inscriptiondimanche 29 novembre 2009StatutMembreDernière intervention 8 mai 2011 12 déc. 2009 à 14:46
Merci crackter, c'est super sympa, et oui je suis assez motivé...^^, je vais mettre en application les règles que tu as rappeler pour le typage, et int en place de Number, j'ai penser un moment retravailler ce script pour le mettre en class, mais j'éprouve de grande difficulté avec les attribut private et public, cependant c'est vers les class que je veux aller, je m'accroche et tes solutions me donne encore plus de motivation....^^
mtlbss
Messages postés39Date d'inscriptiondimanche 29 novembre 2009StatutMembreDernière intervention 8 mai 2011 13 déc. 2009 à 14:41
Merci, crackter, je vais essayer de mettre ce code sous forme de classes, comme sa j'aurais une base pour pouvoir te poser des question, c'est super sympas....^^