fragger
Messages postés21Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention15 janvier 2009
-
14 janv. 2009 à 14:10
faiblard
Messages postés337Date d'inscriptionsamedi 3 février 2007StatutMembreDernière intervention 4 janvier 2011
-
15 janv. 2009 à 13:43
Bonjour à tous,
Voilà, je bloque sur ce code et je tourne en rond...
Le
script est celui d'un clip qui permet de vérifier ce qui a été saisi
par l'utilisateur en le comparant à des valeurs stockées dans un
tableau.
Au début j'utilisais des valeurs numériques et j'avais
pas besoin de tableau (et ça marchait;-)) mais je voulais laisser le
choix de saisir des décimales avec des points ou des virgules.
Trace lit bien le contenu de mes tableaux mais je ne parviens pas à faire la comparaison avec les textes saisis... Peut être que je fais fausse route avec des tableaux....
Voici le code :
on (release) {
var v1:Array = ["400.4","400,4"];
var v2:Array = ["411.5","411,5"];
var vv1:String = v1_txt.text;
var vv2:String = v2_txt.text;
for(var p:String in v1)
{trace(v1[p]);
}
for(var m:String in v2)
{trace(v2[m]);
}
if (vv1!=v1[p] || vv2!=v2[m]) {
message_txt.text = "C'est faux. Essayez à nouveau";}
faiblard
Messages postés337Date d'inscriptionsamedi 3 février 2007StatutMembreDernière intervention 4 janvier 2011 14 janv. 2009 à 14:21
Bonjour,
Quand tu dis :
Au début j'utilisais des valeurs numériques et j'avais pas besoin de tableau (et ça marchait;-)) mais je voulais laisser le choix de saisir des décimales avec des points ou des virgules.
Tu es passé au tableau juste pour pouvoir rentrer des décimales? Oo
fragger
Messages postés21Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention15 janvier 2009 14 janv. 2009 à 15:14
Je vais déplacer mon script dans le scénario.
J'ai du zapper un truc mais ce sont 2 valeurs différentes pour moi XXX, XX et XXX.
XX. Alors peut être que je me plante complétement.
Quoi qu'il en soit lorsqu'on arrive là :
if (vv1!=v1[p] || vv2!=v2[m]) {
Je prévois que que p et m doivent avoir le contenu de leurs tableaux respectifs pour en comparer les valeurs à celles saisies.
C'est un vrai brouillon car c'est la première fois que je touche à ce genre de manip (boucle, tableau...)
J'avais pensé à une conversion des caractères saisis pour régler cette histoire de décimale avec point ou virgule mais je me suis dit qu'en passant sur des tableaux je pourrais réutiliser le principe sur toute sorte de saisie.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bali_balo
Messages postés1378Date d'inscriptionsamedi 9 octobre 2004StatutMembreDernière intervention 1 novembre 20101 14 janv. 2009 à 15:30
Pourquoi ne pas tout convertir en Number ???
var v1:Array = [400.4,400,4];
var v2:Array = [411.5,411,5];
// on "'cast" les variables récupérées des TextField dynamiques
var vv1:Number= Number( v1_txt.text );
var vv2:Number= Number( v2_txt.text );
Ensuite tu peux effectuer tes comparaisons tranquillement...
bali_balo....=]
fragger
Messages postés21Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention15 janvier 2009 14 janv. 2009 à 16:06
Je me suis servi de ce que tu m'as écrit et ça donne ça :
on (release) {
var v1:Array = Array("400.4", "400,4");
var v2:Array = Array("411.5", "411,5");
var vv1:String = v1_txt.text;
var vv2:String = v2_txt.text;
if (vv1==(v1[0]) || vv1==(v1[1]))
{
var p:Number=1;
trace(p);
}
else {
var p:Number=0;
trace(p);
};
if (vv2==(v2[0]) || vv2==(v2[1]))
{
var m:Number=1;
trace(m);
}
else {
var m:Number=0;
trace(m);
};
if (m!=1 ||p!=1) {
message_txt.text = "C'est faux. Essayez à nouveau";}
ça fonctionne mais je n'ai plus de boucle et je trouve mon script laborieux. En fait je n'ai pas trouvé comment comparer des valeurs saisies en lisant des tableaux...
fragger
Messages postés21Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention15 janvier 2009 14 janv. 2009 à 16:32
ça veut dire que mon script est tout pourri?
En fait je pense avoir compris le principe du tableau
montableau[0]
montableau[1]
montableau[2]
Mais c'est tout ce qui gravite autour et surtout la comparaison d'un élément au contenu de plusieurs tableaux... J'ai vu bcp de tutos sur la chose mais ça traite principalement du remplissage dynamique ou de la lecture du contenu.
Je tiens vraiment à comprendre car je vais en avoir souvent besoin...
Bali balo ===> le fait de caster la saisie c'est la transformer en number (123,5 devient 123.5)?
Si c'est le cas je peux faire juste une comparaison sur une valeur numérique?
cs_bali_balo
Messages postés1378Date d'inscriptionsamedi 9 octobre 2004StatutMembreDernière intervention 1 novembre 20101 14 janv. 2009 à 16:46
En fait avant tu comparais des String entre eux. Il est plus juste que
tous ces valeurs numériques soient de type Number. Cela évite dans un
premier temps les bugs de comparaison entre les String et les bugs de
concaténation.
J'ai fait rapidement ce test :
var s:String = "403.1";
trace( Number(s) );
Cela affiche bien 403.1
Mais si je fais :
var s:String = "403,1";
trace( Number(s) );
Cela m'affiche NaN. Donc en fait si tu veux laisser la possibilité à l'utilisateur de saisir soit un "." soit un "," ou voire même un autre séparateur, il va falloir que tu traites d'abord tes String. C'est-à-dire tu regardes les String enregistrés et si tu vois que l'utilisateur a saisie un "," alors tu transformes ce "," en "."
Ensuite tu peux caster comme je te l'ai montré.
Si je ne suis pas très clair, rappel moi de façon concis et explicite ton problème, ou plutôt le résultat que tu veux obtenir.
bali_balo....=]
fragger
Messages postés21Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention15 janvier 2009 14 janv. 2009 à 17:04
Au début mon test ne traitait que des number et j'avais mis une condition if Nan pour guider la saisie. Or il s'est avéré que des utilisateurs saisissaient les décimales avec la virgule... Donc je me suis dit que j'allais tout mettre dans un tableau dans le but de réutiliser ce script pour d'autres éléments que des number.
Le résultat que je souhaite obtenir est le suivant :
- plusieurs champs de saisie qui comparent leur contenu à des tableaux respectifs contenant plusieurs réponses possibles.
- faire évoluer la chose en indiquant quels sont les champs faux.
En gros il me manque le moyen de comparer les valeurs saisies à celles des tableaux.
La conversion "," en "." est pratique mais je serai confronté au même probleme lorsque je n'aurai à traiter que des string.
Voilà tu sais tout :-) j'espere avoir été clair et concis.
fragger
Messages postés21Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention15 janvier 2009 15 janv. 2009 à 13:13
J'ai parcouru de nombreux tutoriaux et je suis parvenu à la solution suivante :
on (release) {
var v1:Array = Array("400.4", "400,4");
var v2:Array = Array("411.5", "411,5");
var vv1:String = v1_txt.text;
var vv2:String = v2_txt.text;
for (var i = 0;i<v1.length; i++) { if (vv1 v1[i]&& vv2 v2[i]){
message_txt.text = "C'est juste!";
trace ("correct");
trace (v1[i]);
trace (v2[i]);
break;
ça fonctionne mais lorsque je saisi une valeur avec le point et l'autre avec une virgule il me considère la réponse comme fausse....
Je pense que ça vient de i et qu'il faudrait que je crée une autre variable pour j mais je ne sais pas comment intégrer la chose à mon for (var i = 0;i<v1.length; i++)....