BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 2014
-
27 janv. 2011 à 23:08
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 2014
-
29 janv. 2011 à 15:56
Hello,
je suis en train de m'essayer à la gestion du focus en as3 sur des composants persos : boutons, champs textes, etc.
Pour commencer je teste sur un simple formulaire d'identification contenant 2 champs textes : "pseudo" et "mdp", ainsi qu'un bouton "valider".
Dans l'idée je souhaite que lorsqu'on clique sur le champ de texte de saisie "pseudo" le curseur de ce champ de saisie s'affiche, et si l'on clique sur le champ de saisie "mdp", le curseur du champ de saisie "mdp" s'affiche et celui du champ de saisie "pseudo" s'efface. Dans la logique si l'on clique sur le bouton "valider" j'aimerai que les curseurs des 2 champs "pseudo" et "mdp" disparaissent.
Pour faire simple mes champs de texte de saisie "pseudo" et "mdp" sont des clips qui contiennent chacun respectivement un clip "contour" qui dès lors que l'on clique s'affiche (comme les champs de saisie input en html en somme -> le fameux cadre bleu qui apparaît lors d'un clic sur le champ en question).
Bref, je parviens à des résultats mais ce n'est pas encore satisfaisant à 100% : j'ai défini des événements sur les clics sur chacun des objets et ça fonctionne, mais pour gérer le changement de focus lorsqu'on presse la touche tabulation ça coince.
Donc j'en appelle à vos idées pour la gestion de touche tabulation concernant la prise du focus.
Voici mon ébauche de code :
import flash.events.MouseEvent;
import fl.managers.FocusManager;
import flash.display.InteractiveObject;
var fm:FocusManager = new FocusManager(this);
//définition de l'ordre des tabulations :
pseudo.pseudo.tabIndex = 1;
mdp.mdp.tabIndex = 2;
valid.tabIndex = 3;
valid.buttonMode=true;
valid.useHandCursor=true;
//je spécifie que les contours "bleus" des clips sont invisibles
pseudo.contour.visible = false;
mdp.contour.visible = false;
//j'initialise le focus sur le champ texte de saisie du clip "pseudo",
//"pseudo" étant le champ de texte de saisie -> "pseudo"(clip)."pseudo"(champ texte) :
fm.setFocus(pseudo.pseudo);
//j'attribue les événements sur le changement de focus :
pseudo.pseudo.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, FocusCH);
mdp.mdp.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, FocusCH);
//j'attribue les événements sur le clic :
pseudo.pseudo.addEventListener(MouseEvent.CLICK, FocSET);
mdp.mdp.addEventListener(MouseEvent.CLICK, FocSET);
//fonction FocSET : le contour bleu de l'objet cliqué s'affiche :
function FocSET(event:MouseEvent):void{
event.currentTarget.parent.contour.visible = true;
}
//fonction FocusCH : le contour bleu de l'objet précédemment cliqué disparait :
function FocusCH(fe:FocusEvent):void{
fe.currentTarget.parent.contour.visible = false;
}
Soit : pour la gestion du clic ça tourne à peu près, mais ce que j'aimerai parvenir à faire c'est faire disparaitre le curseur du texte lorsque le focus change d'objet et dans le même temps pouvoir switcher le focus d'un objet à l'autre via la touche tabulation (ce qui n'est pas fonctionnel actuellement).
Merci d'avance pour vos éclaircissements sur la question ,
A plus ,
BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
A voir également:
Fl.managers.FocusManager... pour composants persos
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 20146 29 janv. 2011 à 15:56
Bon et bien je m'auto-réponds :
après avoir fouiné sur le net j'ai décidé de me passer du FocusManager, pour le coup j'ai défini des événements lors des clics sur mes objets, et sur l'appui de la touche TAB, afin de faire apparaître le contour bleu "maison" que j'ai créé. En définissant l'ordre d'apparition via tabIndex je parviens donc à "switcher" entre les éléments et ce en cohérence que l'on appuie sur la touche TAB ou que l'on clique sur l'un des éléments.