Modifier un champ texte dans un bouton

thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015 - 11 avril 2007 à 15:01
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 - 20 avril 2007 à 11:21
Bonjour à tous !

J'ai sur mon site flash un bouton contenant une zone de texte. Est-il possible de modifier via actionscript le texte de ma zone de texte ? J'ai essayé en créant par exemple un bouton nommé "monBouton", dans lequel j'ai créé pour les positions "Up" et "Over" une zone de texte, nommée "monTexte". Le code suivant est sans effet :



monBouton.monTexte.text = "toto";

code qui marche très bien lorsque cette même zone de texte est dans un MovieClip... La solution est probablement tout bête, mais je ne la vois pas...

Merci par avance pour votre aide !

3 réponses

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
12 avril 2007 à 09:41
Bonjour,

essaye en ne mettant pas une zone de texte dans chaque état du bouton mais en mettant la zone de texte sur un calque à part du bouton (au dessus du reste)

Sinon, utilise un movieclip !!
avec les événement onRollOver, onRollOut et onPress tu peux facilement simuler un bouton avec un movieclip.

@+
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
12 avril 2007 à 21:21
Bonjour et merci pour ta réponse !

Hélas même en mettant la zone de texte dans un calque à part, ça ne marche pas mieux, et je perdrais en plus la possibilité d'avoir plusieurs affichages différents de la zone de texte selon les états du bouton.
Je pense en effet devoir utiliser des movieclip. C'est dommage, ça m'aurait un p'tit peu allégé mon code, mais bon, au moins ça marche

Merci en tout cas !
0
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
20 avril 2007 à 11:21
Salut,

Je sais que le sujet date un peu, mais (j'espère) que ma solution pourra encore être utile à quelqu'un (si pas à Thenaoh, à quelqu'un d'autre d'intéressé).

Pour concevoir ce genre de truc, moi à ta place, je ferais mon bouton sans le texte.
Je créerais un clip contenant le champ texte avec plusieurs frames, chacune représentant un état du bouton.
Pour plus de portabilité, je les incluerais tous deux dans un movieclip (comme ça, tu pourras réutiliser facilement le bouton avec le texte)

J'aurais donc :
un movieClip général (que j'appelerai : bouton_general) contenant deux symboles mais une seule frame.
    au dessus un bouton invisible (bouton).
    au milieu un clip (texte) qui contient 3 frames avec chacune un champ texte (avec comme nom d'occurence : champ_texte)
    au dessous un clip (fond) qui contient 3 frames avec le design du bouton dans les différents états demandés
   
Lorsque ton bouton change d'état (survole, press etc) tu mettrais un code comme ceci :
Code (dans mon cas, le code est mis sur la première frame du clip : bouton_general)
    // Variable qui sauvegardera temporairement l'intitulé du bouton
    var sNom_temporaire :String = "";
    // Code fonctionnant pour les différentes actions
    bouton.onRollOver = function(){
       // Sauvegarde de l'intitulé du bouton ... si le texte ne changera jamais, on peut attribuer directement la valeur à la variable. Sans le refaire à chaque fonction
       sNom_temporaire = texte.champ_texte.text;
       // On change l'état du design du bouton (on peut aussi utiliser des étiquettes plutôt que les numéros de frame)
       fond.gotoAndStop(3);
       // On change l'état du texte
       texte.gotoAndStop(3);
       // On réattribue la valeur du texte au nouveau champ
       texte.champ_texte.text = sNom_temporaire;
    }
Fin code
En sauvant le nom du champ texte dans une variable, tu peux ainsi le réattribuer à chaque changement de frame.

Voilà.
--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------
0
Rejoignez-nous