2008-10-21 7 views
0

Je suis nouveau à Flex, mais pas nouveau dans la programmation. Je veux écrire un gestionnaire d'événement générique qui sera appelé par toutes mes boîtes de saisie de texte lorsqu'elles recevront le focus. Quand ils ont le focus, je veux changer la couleur de la boîte de saisie de texte. Quand ils perdent le focus, je veux restaurer le profil de couleur "inactif". Je pourrais écrire un gestionnaire d'événement ActionScript pour chaque boîte de saisie de texte, mais nous savons tous que c'est boiteux. : o) Ce dont j'ai besoin, alors, est un moyen d'accéder à l'objet qui appelle le gestionnaire d'événements.comment puis-je écrire une fonction de modification de propriété générique dans Flex/Actionscript3?

En Delphi, j'aurais écrit une fonction qui passe dans l'objet Sender, me permettant d'accéder aux propriétés de l'objet appelant. Je suppose qu'ActionScript/Flex a une architecture complètement différente, c'est pourquoi j'ai de la difficulté à le faire.

Merci d'avance!

Répondre

1

Vous devez sous-classe TextInput et gérer les événements de discussion là-dedans. Je pense que ce serait le moyen le plus simple de réaliser ce que vous cherchez sans code complexe.

1

J'espère que je comprends ce que vous demandez ... parlez-vous de la délégation d'événements?

Cela a fonctionné pour moi:

// 'focusOut' for blur 
stage.addEventListener('focusIn', function(e:Event):void { 
    // The focused control is e.target 
}); 
0

Si vous souhaitez modifier l'aspect de la zone de saisie focalisée, vous pouvez le faire en définissant la propriété focusSkin. Si vous voulez que cela se produise globalement, vous pouvez mettre une déclaration de style dans votre fichier CSS.

Dans cet exemple CSS, je remplace le focusSkin par défaut (mx.skins.halo.HaloFocusRect) avec un fichier PNG incorporé.

TextInput { 
    focusSkin: Embed(source="focus.png"); 
} 

TextInput a quelques propriétés pour modifier l'apparence de la mise au point, comme changer l'opacité de la peau de mise au point (focusAlpha de la propriété). Vérifiez le TextInput documentation pour plus d'informations.

Questions connexes