Gerer un evenement suite à une selection dans un ComboBox

Gerer un evenement suite à une selection dans un ComboBox - Flash/ActionScript - Programmation

Marsh Posté le 07-10-2009 à 19:56:35    

Bonjour,
 
Je suis en train de developper une application Flash, j'aimerais à l'issue de la selection d'un élément contenu dans un Combobox
faire apparaitre un texte.
 
Le texte devra être différent en fonction de la selection effectuée.
 
Mon Combobox contient 4 item
 
il me faudrait un évenement pour chaque item de type : if "item 1" then "texte 1"
 
Merci d'avance,
 
Benjamin Baroukh

Reply

Marsh Posté le 07-10-2009 à 19:56:35   

Reply

Marsh Posté le 08-10-2009 à 08:21:09    

pas de réponses ?

Reply

Marsh Posté le 08-10-2009 à 09:20:45    

Tu as essayé l'evenement onchange comme je te l'avais suggéré sur l'autre topic ?


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 08-10-2009 à 09:44:08    

J'ai essayé pour l'autre topic et finalement j'ai trouvé une parade technique qui vaut ce qu'elle vaut mais je suis arrivé au résultat souhaité. Par contre là du coup ça me semblait plus accessible et plus facile à réaliser mais je reviens au même problème à savoir : faire interragir un texte et un combobox.
 
J'ai des connaissances assez limités en actionscript alors si tu pouvais juste me donner la marche à suivre je te serais très reconnaissant et je pourrais éventuellement te renvoyer l'ascenseur (quoi que j'ai vu ton site il est très bien fait).
 
Basiquement voilà ce que je voudrais obtenir :
 
nom Combobox : age
item 1 : 18-25 ans
item 2 : 25-35 ans
item 3 : + de 35 ans
 
evenement souhaité : selon l'age le texte dynamique nommé "age_result" doit prendre les valeurs suivantes :
if item 1 then : "compte jeune"
if item 2 then : "compte standard"
if item 3 then : "autre"
 
Précision : pas d'envoi php en vue


Message édité par benjyman999 le 08-10-2009 à 09:51:18
Reply

Marsh Posté le 08-10-2009 à 10:02:58    

en reprenant tes noms de clips, essaye de rajouter dans ton script :
 
age.onChanged=function(){
trace("Titre Item = "+age.value+" // Index = "+age.selectedIndex);
}
 
Est ce que le trace te retourne bien les bonnes valeur ? ( Le titre et son index, 0, 1 ou 2) ?


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 08-10-2009 à 10:54:54    

Ce code je dois le faire correspondre au texte dynamique "age_result" ? où dois-je le copier ?


Message édité par benjyman999 le 08-10-2009 à 10:58:02
Reply

Marsh Posté le 08-10-2009 à 11:06:49    

Met le code dans une clé vide, au même niveau que tu a "age" (ta comboBox).
Ce n'est qu'un test, si (quand tu lance l'animation) tu sélectionne ton item 2 et que le trace retourne bien :
=> Titre Item = 25-35 ans // Index = 1
Ça voudra dire que l'evenement onChanged fait bien ce que tu souhaite...
C'est dans un second temps qu'on jouera sur age_result...
Tu connais la fonction trace() ?


Message édité par abais le 08-10-2009 à 11:11:49

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 08-10-2009 à 11:15:16    

euh... non je savais que c'était utilisé pour lister des champs ou pour donner un retour mais pas plus que ça.
Je vais essayer ce soir...


Message édité par benjyman999 le 08-10-2009 à 11:15:52
Reply

Marsh Posté le 08-10-2009 à 11:35:42    

C'est très important pour faire des test...
Je te suggère vraiment d'apprendre l'AS si tu veux en jouir pleinement...
=> http://www.siteduzero.com/tutoriel [...] cript.html
Bon, c'est vraiment dommage que ce soit de l'AS2, quitte à commencer, apprend l'AS3...


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 08-10-2009 à 12:30:41    

Je connais quelques routines de base mais ça se limite aux loadbars et quelques fonctionalités très limitées. merci

Reply

Marsh Posté le 08-10-2009 à 12:30:41   

Reply

Marsh Posté le 08-10-2009 à 18:10:29    

J'ai fait exactement comme tu me l'as indiqué mais ça ne trace rien... Je peux te l'envoyer par mail si ça te déranges pas ?

Reply

Marsh Posté le 08-10-2009 à 18:49:34    

wai vas-y...


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 09-10-2009 à 09:47:23    

Donc, le script nétait pas bon car les event ne se gèrent pas du tout de la même façon...
Au final, le trace fonctionne avec :

Code :
  1. var ageListener:Object = new Object();
  2.  
  3. ageListener.change=function(event_obj:Object)
  4. {
  5.   trace("Titre Item = "+age.value+" // Index = "+age.selectedIndex);
  6. }
  7.  
  8. age.addEventListener("change", ageListener);


 
Pour changer ton texte (dont le champs de texte à pour nom d'occurence "age_result", on aura donc :
 

Code :
  1. var ageListener:Object = new Object();
  2.  
  3. ageListener.change=function(event_obj:Object)
  4. {
  5.     switch(age.selectedIndex) // On s'interesse à age.selectedIndex
  6.    {
  7.     case 0 : // Si il est = à 0....
  8.         age_result.text = "Compte Jeune";
  9.         break
  10.     case 1 : // ... à 1
  11.         age_result.text = "Compte standard";
  12.         break
  13.     default : // pour tout le reste... on aurait pu aussi mettre case : 2
  14.         age_result.text = "Compte Vieux :D";
  15.         break
  16.     }
  17. }
  18.  
  19. age.addEventListener("change", ageListener);


 
J'ai utilisé un switch(), mais si tu n'es pas à l'aise, tu peux utilisé un if/else :

Code :
  1. if (age.selectedIndex == 0)
  2. {
  3.     age_result.text = "Compte Jeune";
  4. }
  5. else if (age.selectedIndex == 1)
  6. {
  7.     age_result.text = "Compte standard";
  8. }
  9. else
  10. {
  11.     age_result.text = "Compte Vieux :D";
  12. }


 
(N'oublie pas de doublecliquer dans le cadre code de ce post si tu veux copier coller sans les # au début de chaque ligne...)


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 09-10-2009 à 21:55:39    

Voici le message d'erreur que j'obtiens à la saisie du code :
 
**Erreur** Séquence = Séquence 1, calque = Calque 5, image = 1 :Ligne 5 : L’opérateur '=' doit être suivi d’un opérande
          switch(age.selectedIndex) // On s'interesse à age.selectedIndex
 
**Erreur** Séquence = Séquence 1, calque = Calque 5, image = 1 :Ligne 6 : Erreur de syntaxe.
         {
 
**Erreur** Séquence = Séquence 1, calque = Calque 5, image = 1 :Ligne 2 : Erreur de syntaxe.
       
 

Reply

Marsh Posté le 09-10-2009 à 22:24:24    

Je commence à desesperer !
le code que tu m'as envoyé fonctionnait sur AS 3 ? est-il compatible AS 2 ?
 
Pour le code suivant :
 
var ageListener:Object = new Object();
ageListener.change=function(event_obj:Object);{
if (age.selectedIndex == 0){      
age_result.text = "Compte Jeune";}  
else if (age.selectedIndex == 1){      
age_result.text = "Compte standard";}  
else {     age_result.text = "Compte Vieux :D";}
age.addEventListener("change", ageListener);
 
 
Erreurs de synthaxe :
 
**Erreur** Séquence = Séquence 1, calque = Calque 5, image = 1 :Ligne 2 : '{' attendu
     ageListener.change=function(event_obj:Object);{
 
**Erreur** Séquence = Séquence 1, calque = Calque 5, image = 1 :Ligne 8 : Erreur de syntaxe.
     age.addEventListener("change", ageListener);
 
**Erreur** Séquence = Séquence 1, calque = Calque 5, image = 1 :Ligne 2 : Le bloc d’instruction doit être terminé par '}'
     ageListener.change=function(event_obj:Object);{
 
**Erreur** Séquence = Séquence 1, calque = Calque 5, image = 1 :Ligne 8 : Erreur de syntaxe.
     age.addEventListener("change", ageListener);
 
Total des erreurs ActionScript : 4   Erreurs signalées : 4


Message édité par benjyman999 le 09-10-2009 à 22:27:04
Reply

Marsh Posté le 09-10-2009 à 22:37:58    

atta j'essaye (je ne l'ai meme pas testé)


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 09-10-2009 à 22:51:39    

Le 1er code marche, le 2nd avec les if aussi, mais tu t'es amusé à mettre un point virgule avant l'accolade de la fonction !!!
S'ailleurs, c'est quoi cette mise en forme de code... rédige comme moi... ou comme ça :
 

Code :
  1. var ageListener:Object = new Object();
  2.  
  3. ageListener.change=function(event_obj:Object){
  4.     if (age.selectedIndex == 0){      
  5.         age_result.text = "Compte Jeune";
  6.     }  
  7.     else if (age.selectedIndex == 1){      
  8.         age_result.text = "Compte standard";
  9.     }  
  10.     else {
  11.         age_result.text = "Compte Vieux :D";
  12.     }
  13. }
  14.  
  15. age.addEventListener("change", ageListener);


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 09-10-2009 à 23:45:51    

On s'en approche, mon code :
 
var ageListener:Object = new Object();
ageListener.change=function(event_obj:Object){
 if (age.selectedIndex == 1){  
 age_result.text = "Compte adultes";
 }
 if (age.selectedIndex == 2){  
 age_result.text = "Compte Vieux";
 }
 else if (age.selectedIndex == 0){  
 age_result.text = "Compte standard";
 }  
   
  }
   
  age.addEventListener("change",ageListener);
 
Effet : l'item 1 et 2 s'affichent mais l'item par défaut ne fonctionne pas et affiche "_level0.age_result". De plus il faudrait pouvoir modifier sa selection si erreur il y a.

Reply

Marsh Posté le 10-10-2009 à 10:13:11    

aprend dans un premier temps à distinguer un if{} / else if{} et else{}...


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 11-10-2009 à 13:06:13    

C'est bon j'ai terminé ! Tout fonctionne, merci "abais" pour tes conseils.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed