Faire apparaitre un élément en fonction du texte tapé

jeunetma Messages postés 38 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 10 juin 2009 - 1 avril 2009 à 13:00
jeunetma Messages postés 38 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 10 juin 2009 - 3 avril 2009 à 10:56
Bonjour à tous,

Voila j'aimerais pouvoir faire apparaitre un élément en fonction de ce que l'utilisateur tape à l'écran. Par exemple, s'il tape "France" alors Flash doit faire apparaitre un clip. S'il tape "Italie" alors Flash doit faire apparaitre un autre clip. Quelle est la solution à ce problème? Est-ce que je dois me créer une sorte de mini base de données et faire des interactions avec de l'ActionScript? Merci à ceux qui voudront bien me répondre.

28 réponses

ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
1 avril 2009 à 13:22
     Salut;
Si il n'y a pas énormement de possibilités pas besoin de base, juste un array suffira, puis du compare les valeurs avec toutes les entrées du tableau.





var tab_mots:Array = new Array("Italie", "France", "espagne......"); //déclaration d'array qui contientles mots clés
var tab_size:Number = new Number(tab_mots.lenght); //nombre de mots clés contenus dans le tableau

for (var i:int = 0; i <= tab_size; i++)  {  //checking de la valeur inscrite ("champ" est ta zone de saisie de texte)
   if (champ.txt == tab_mots[i]) {
      fonctionQuiAfficheTesClip(tab_mots[i]);
  }

}

Je l'ait fait en as3 parce que j'avais envie de faire de l'AS3....
bonne continuation.

 
0
jeunetma Messages postés 38 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 10 juin 2009
1 avril 2009 à 14:18
D'abord merci pour cette réponse! J'ai besoin d'un peu plus d'éclaircissement car je débute en ActionScript!
Est-ce que "var tab_mots:Array = new Array" suffit à créer un tableau? Et je n'ai pas bien compris à quoi servait la variable i? Faut que je la déclare comment exactement? Et enfin, (je sais ca fait beaucoup mais je suis novice) le clip doit apparaitre lorsque l'utilisateur aura cliqué sur un bouton de validation. Comment dois-je m'y prendre (j'utilise la fonction onPress?).Est-il possible d'avoir le code en AS2 car l'AS3 je n'y ai jamais touché. Je te remercie d'avance
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
1 avril 2009 à 14:38
Bonjour,

Creuse l'idée de chasseur...

Pour déclarer un tableau on fait new Array (); avec les parenthèses sinon ça ne passera pas....

Par contre sauf si cela a changer pas besoin de number quand tu fais un length car celui ci te renournera toujours un Number (a vérifier cependant)

Ensuite je rajouterai un break dans le for car une fois que tu as trouvé pas besoin de continuer de chercher dans le tableau !

De plus chasseur si tu va de l'id 0 a la longueur donné par length je doute fort que le dernier passage dans la boucle tape dans une case valide du tableau. donc i < tab_size et non i <= tab_size
0
jeunetma Messages postés 38 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 10 juin 2009
1 avril 2009 à 15:00
Oui mais alors la je t'avouerais que je suis un peu perdu. C'est lorsque l'utilisateur clique sur un bouton de validation que mon clip doit apparaitre. Ex : je tape "france" je valide et c'est à ce moment la que mon clip doit apparaitre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
1 avril 2009 à 15:10
il ta donné la base pour comparer... Pour que tu cherche par toi même et non qu'on te mâche le boulot et que tu ne progresse pas...

Il te dis donc de déclarer un tableau avec tout ce que tu veux comme clip dedans,
récupérer la saisie utilisateur et comparer... après dans le for tu met bien ce que tu veux (clip trouvé, affichage, compte a rebours...)
0
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
1 avril 2009 à 16:33
   Bonjour;
Merci pour les petites correction, je crois que "lenght" renvoit un "int" mais bon ça ne pose pas de problème (et normalement ce n'est pas la peine de déclarer les variables numérique, on doit pouvoir faire :
 var tab_size:Number = tab_mots.lenght;
et bien vu pour le comparateur^^
   bonne continuation.
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
1 avril 2009 à 16:48
Si dans ce cas la il renvoie un int pourquoi ne pas typer int plutôt que number? ^^

Autant faire de l'as 3 totalement dans ce cas :)

Bon a coté de ça si le posteur d'origine pouvais expliquer plus clairement ce qu'il comprend pas dans les explications donné...
0
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
1 avril 2009 à 17:24
Bah l'habitude; souvent la flemme de calculer ce que contiendra la variable, un Number on peut tout mettre dedans et bon on va pas dire que ça prend bcp plus de place qu'un int.
        bonne fin de journée.
0
jeunetma Messages postés 38 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 10 juin 2009
2 avril 2009 à 09:25
Alors alors, ce que j'ai du mal à me visualiser c'est comment flash va récupérer les données entrées dans mon texte de saisie. C'est peut-être évident pour vous mais moi je débute complètement. J'en profite pour vous poser une question : Est-ce que l'on peut mettre deux conditions dans un if? En tout cas merci de vos réponses, j'essaye de faire de mon mieux!
0
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
2 avril 2009 à 09:38
   Salut;


if (champ.txt == tab_mots[i]) {
      fonctionQuiAfficheTesClip(tab_mots[i]);
  }




Cette partie du code compare la valeur de champ.txt (champ est le nom d'occurence de ton champs de texte) avec toutes les valeurs contenues dans l'Array "tab_mots" et si  il y'en as une qui corresponds il exécute le code contenu entre les { }.

Pour deux conditions dans un if c'est :


if ((condition1 "true") && (condition2 "true")) {
              }




pour que le code s'éxécute si les 2 conditions sont remplies ou :


if ((condition1 "true") || (condition2 "true")) {

              }




pour que le code s'éxécute si une seule des deux conditions est remplie.

     ++
0
jeunetma Messages postés 38 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 10 juin 2009
2 avril 2009 à 11:06
d'accord d'accord je commence à y voir plus clair!dernière petite question : j'utilise comme fonction pour afficher mon clip un truc du genre monClip._visible = true; est-ce que cela ne va pas créer de conflit dans mon if étant donné qu'il y aura deux ; ? en tout cas merci pour tout!
0
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
2 avril 2009 à 11:23
comprend pas... 2 ";"? pourquoi donc? pose un bout de code qu'on voit.
0
jeunetma Messages postés 38 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 10 juin 2009
2 avril 2009 à 12:17
voila ce que ca donne mais attention on se moque pas!j'ai commencé AS ya 2 jours

monClip._visible = false;

var monTableau:Array = new Array("Italie", "France");
var tab_size:Number = new Number(tab_mots.lenght);

for (var i = 0; i < tab_size; i++)  { 
   if ((champ.txt == monTableau[i]) && (boutonOK.onPress)) {//champ est ma zone de saisie et boutonOK permet de valider
      monClip._visible = true;
  }
}
0
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
2 avril 2009 à 13:22
t'es bien en as2 n'est ce pas (penser à le préciser!!!!) du coup ton code sera :

boutonOK.onPress = function() {
   var monTableau:Array = new Array("Italie", "France");
   var tab_size:Number = new Number(tab_mots.lenght);

   for (var i = 0; i < tab_size; i++)  { 
      if ((champ.txt == monTableau[i]) && (boutonOK.onPress)) {//champ est ma zone de saisie et boutonOK permet de valider
      monClip._visible = true;
  }
}
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
2 avril 2009 à 13:46
Toujours est il que : (je sais suis casse ****)

var tab_size:Number = new Number(tab_mots.lenght);

Pas besoin du new Number, ou au moins enlève le new... (le mieux étant d'enlever le tout car length te retourne dans tout les cas un number ce qui éviterais un appel a une fonction )

pour la ligne :
for (var i = 0; i < tab_size; i++) {
Type ton i en number même s'il est pas utilisé longtemps essaye de typer t'es variables partout pour rester cohérent tout au long de ton code

Je vois pas trop l'intérêt du && (boutonOK.onPress)

et essaye de récupérer le champ.txt des le début en le mettant dans une variable ce qui évitera a flash d'aller rechercher le contenu de la case tout le long.

Et enfin je mettrait les nom en minuscule dans le tableau et ferai un toLowerCase ce qui permettrai autant de prendre FRANCE france ou FrAnCe ;)

Du coup je verrai plutôt :

boutonOK.onPress = function() {

var monTableau:Array = new Array("italie", "france");
var tab_size:Number = tab_mots.lenght;
var saisieUtilisateur:String = champ.txt.toLowerCase();

for (var i:Number = 0; i < tab_size; i++) {
if (saisieUtilisateur === monTableau[i]) {
monClip._visible = true;
}
}
}
0
jeunetma Messages postés 38 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 10 juin 2009
2 avril 2009 à 14:16
Désolé, donc oui je suis bien AS2. Merci pour le toLowerCase il me sera très utile! Par contre, je n'arrive toujours pas à récupérer ce qui est saisie par l'utilisateur. Mon script ne contient pas d'erreurs mais lorsque, par exemple, je tape "france" et je clique sur mon boutonOK mon clip n'apparait pas!Est-ce que vous pouvez me guider dans cette étape? ActionScript c'est vraiment difficile pour les novices..
Encore merci pour vos réponses!
0
faiblard Messages postés 337 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 4 janvier 2011
2 avril 2009 à 14:22
A mon avis c'est juste que tu cible mal ton clip

Alors euhhh le mieux est un ciblage relatif mais le soucis est qu'on ne sais pas comment tu as placé t'es clip et autre :p

Donc peut être un truc du genre :

_parent.champ.txt ou bien _parent._parent.champ.txt...
0
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
2 avril 2009 à 15:04
  Merci faiblard pour la condition avec le bouton^^ et tant qu'on y est il ne faudrait pas déclarer le tableau et sa longeur sur le onPress mais indépendamant du reste. Jeunet, montre nous l'etat actuel de ton code qu'on puisse t'aider.
0
jeunetma Messages postés 38 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 10 juin 2009
2 avril 2009 à 15:29
Et bien écoute pour le moment c'est simple : sur ma scène apparait une zone de saisie pour l'utilisateur, un bouton OK pour valider et un clip (qui est initialement invisible). Sinon, pour mon code je l'ai modifié en fonction de ce que vous m'avez conseiller de faire et pour l'instant, je n'ai que ca comme code :

monClip._visible = false;

boutonOK.onPress = function() {

   var monTableau:Array = new Array("italie", "france", "espagne");
   var i:Number = new Number;
   var tab_size:Number = monTableau.lenght;
   var saisieUtilisateur:String = _parent.champ.txt.toLowerCase();

   for (var i:Number = 0; i < tab_size; i++)  {
      if (saisieUtilisateur == monTableau[i]) {
         monClip._visible = true;
      }
  }
}
0
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
2 avril 2009 à 15:53
     Salut;
tu as bien defini le nom d'occurence de ton textField comme "champ" (dans l'onglet propriété) et tu l'as bien defini comme "texte statique" (toujours dans le même onglet).
       
0
Rejoignez-nous